[英]How to use the source generators from CommunityToolkit.Mvvm for a .NET Framework 4.7.2 WPF Application
我最近測試了 WPF UI 庫 ( https://wpfui.lepo.co/ )。 我創建了一個示例項目,該項目針對 .NET 6.0。 示例項目包含一些基本模型和視圖模型,在這些文件中我發現使用[ObservableProperty]
屬性聲明的屬性。 我真的很喜歡它如何減少簡單屬性所需的代碼量,所以我想將它用於一個以 .NET Framework 4.7.2 為目標的現有項目。
但我不知道如何或什至可能。 我在網上找到的現有信息非常混亂,但這個問題的公認答案聽起來是可能的: Roslyn Source Generator not generating any source in a .net framework 4.7.2
我嘗試了以下操作,但應用程序無法構建:
using CommunityToolkit.Mvvm.ComponentModel;
namespace MatlogUtility
{
public partial class HeatListEntry : ObservableObject
{
[ObservableProperty]
private int? heatListId;
}
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Threading.Tasks;
using System.Windows;
using MatlogUtility.Models;
namespace MatlogUtility
{
public static class SqlQueries
{
public static List<HeatListEntry> GetHeatList()
{
List<HeatListEntry> heatList = new List<HeatListEntry>();
string queryString = "SELECT a as heatListId FROM someTable;";
using (SqlConnection connection = new SqlConnection(Globals.ConnectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
var reader = command.ExecuteReader();
try
{
while (reader.Read())
{
heatList.Add(new HeatListEntry
{
HeatListId = reader["heatListId"] == DBNull.Value ? null : (int?)reader["heatListId"]
});
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
return heatList;
}
}
}
錯誤列表顯示'HeatListEntry' does not contain a definition for HeatListId'
我還嘗試安裝一堆與“Roslyn”相關的 NuGet 包,例如 Microsoft.CodeAnalysis.CSharp 和 Microsoft.CSharp,但它仍然不起作用。
我正在嘗試做的事情有可能嗎? 在此先感謝,任何指針表示贊賞!
我也遇到了同樣的問題。 似乎 MVVM 源生成器不支持較舊的 .net 框架(直到 4.8)。 我將我的項目框架從 4.8 更改為 .net 6,它運行良好。
您也可以嘗試使用 .NET 升級助手將 WPF 應用程序升級到 .NET 6
在 .NET 4.8 中為我使用 CommunityToolkit.Mvvm 8.0.0:
此外,您需要將 LangVersion 設置為至少 8.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.