簡體   English   中英

如何將 CommunityToolkit.Mvvm 中的源代碼生成器用於 .NET 框架 4.7.2 WPF 應用程序

[英]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:

  1. 右鍵單擊 packages.config-File。
  2. 選擇“將 packages.config 遷移到 PackageReference ...”

此外,您需要將 LangVersion 設置為至少 8.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM