【问题标题】:Migrating WPF library from .NET Framework to .NET 6将 WPF 库从 .NET Framework 迁移到 .NET 6
【发布时间】:2022-08-12 16:01:36
【问题描述】:

我目前正在使用 .NET 升级助手作为基础将我的 WPF 项目从 .NET Framework 4.8 迁移到 .NET 6,然后手动修复剩余的问题。
我所有的项目都有一组共享的库,其中一个包含标准类和一些自定义UserControl。将此特定库迁移到 .NET 6 时,此库引用的框架是 Microsoft.NETCore.AppMicrosoft.WindowsDesktop.App。问题是当我尝试在另一个项目中使用这个库时,我收到以下警告:

警告 MSB3277 发现不同版本的 \"WindowsBase\" 之间存在无法解决的冲突。
\"WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" 和 \"WindowsBase, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" 之间存在冲突。
\"WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" 被选中是因为它是主要的,而 \"WindowsBase, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" 不是。

查看库引用的两个框架所引用的 WindowsBase,我看到Microsoft.NETCore.App 引用了 WindowsBase v4.0.0.0,而Microsoft.WindowsDesktop.App 引用了 WindowsBase v6.0.0.0。
我该如何解决这个问题?

  • 尝试删除 WindowsBase 依赖项,然后使用正确的版本再次添加它。
  • 在 Visual Studio 中,我找不到从引用的框架中删除依赖项的方法。也许有办法手动完成?
  • 在该菜单中,您只看到解决方案的其他项目的依赖关系,而不是项目引用的框架所依赖的依赖关系
  • 不编译的工程的工程文件长什么样?

标签: c# wpf .net-6.0 .net-4.8


【解决方案1】:

在将 csharp 项目从 .Net 框架升级到 .Net6 时,我遇到了与您一样的问题。

程序集下有一些依赖项(例如systemsystem.xml)指向错误的框架路径但无法删除或修改。在 csdn 上没有太多关于这个问题的信息,所以我确实花了一段时间才通过反复试验找到根本原因,最后是我的 csproj 项目文件中导入的 WinFX.Targets 文件带来了这些 .net 框架依赖项。

WinFX.Targets文件是升级前csproj导入的,升级删除了导入。这是项目所必需的,所以我没有修改就将其添加回来,这导致了 MSB3277 构建警告。

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 2021-09-18
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多