【问题标题】:ICollectionView with .net core 3.0ICollectionView 与 .net 核心 3.0
【发布时间】:2019-10-09 06:15:51
【问题描述】:

我正在将我的项目从经典 .net 迁移到 .net core 3.0。 我在我的 viewmodel ICollectionView 界面中使用,它在 .net core 3.0 框架中无法识别。

我添加了几个 nuget 包以尝试使其工作,但没有运气。

微软声称 System.ComponentModel 定义了 icollectionview (https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.icollectionview?view=netcore-3.0),但没有找到。 我也尝试包含 windowsbase,但也没找到。

我的环境有问题吗?我错过了什么吗?

感谢您的帮助。

这是一个在.netcore3项目下编译的小类:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        ICollectionView col =new CollectionViewSource().View;
        col.Filter = null;
        col.Refresh();
    }
}

编辑:

感谢 ALFA for Microsoft.Windows.SDK.Contracts 在 .net 核心上提供了 ICollectionView 接口,但不幸的是,它并不完整:过滤和刷新没有实现。

【问题讨论】:

  • 如果你在 .NET Core 3.0 上创建一个全新的项目并添加 System.ComponentModel 作为参考,你会看到界面吗?
  • 否,如果我使用完整路径“System.ComponentModel.”,则列表中没有可用的 ICollectionView 类。

标签: c# .net .net-core .net-core-3.0


【解决方案1】:

您需要从这里编辑您的项目文件YourProjectName.csproj

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
   <TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>

到这里:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

<PropertyGroup>
   <TargetFramework>netcoreapp3.0</TargetFramework>
   <UseWPF>true</UseWPF>
</PropertyGroup>

这对我有帮助。

【讨论】:

  • 宾果游戏!有用 !感谢您分享此提示!
【解决方案2】:

.NET Core 3.0+ 上,您可以安装Microsoft.Windows.SDK.Contracts 包,其中包括所有受支持的Windows 运行时API,直到Windows 10 版本1903,并允许您使用ICollectionView

Windows 10 WinRT API 包使您能够添加最新的 Windows 运行时 API 支持 .NET Framework 4.5+ 和 .NET Core 3.0+ 库和应用程序。

【讨论】:

  • 知道为什么 componentModel 没有 ICollecionView 接口吗?
  • Microsoft.Windows.SDK.Contracts 没有被广泛使用。我在问这是否是正确的包...
  • 安装软件包后在Windows.UI.Xaml.Data.ICollectionView 下查看。另外我认为 WindowsBase.dll 包含特定于 Windows 的库,因此无论如何它都不应该允许您引用它。
  • 是的,谢谢,我找到了。我看到有一个包windows.runtime.windowsruntime.ui.xaml,但是没有ICollectionView接口。
  • 是的,你是对的。我认为在 .NET Core 3.0 上,这个包是访问这些库的方法。希望这个 ICollectionView 能满足您的需求,因为正如您所说,这个包还没有被广泛使用,而且它已经预览了很长时间了。
【解决方案3】:

是否尝试将 DLL 导入您的 .Core 项目?

https://docs.microsoft.com/es-es/dotnet/api/system.windows.data.collectionview?view=netframework-4.8

您可以在 .Net 文件夹中找到 PresentationFramework.dll DLL,在我的情况下,我有它

C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF

【讨论】:

  • Vs 让我导入这个 dll,但它什么也没做,而且 ICollectionView 仍然未知。还尝试了 PresentationFramework-SystemCore.dll。也许是因为它不是 .net 核心库?
  • principally .Net Core > 2 支持直接引用外部 .dll,可能对依赖于 32 位 DLL 的 DLL 有问题?其他可以帮助您的帖子:从 .NET Core XUnit 项目中引用标准 dll stackoverflow.com/questions/37866997/… 将 .NETFramework 4.5 dll 添加到 .NETCore 项目 stackoverflow.com/questions/38731567/…
  • 这个项目还有助于将经典的.Net代码迁移到.Net Core github.com/hvanbakel/CsprojToVs2017
  • 这些问题似乎已经过时,因为它们使用 json csproj。我在 vs2019 上,我得到了 xml csproj。我尝试了多目标项目,但也无法使其工作。
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 2020-01-30
  • 1970-01-01
  • 2022-07-08
  • 2020-01-27
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多