.net - .NET SDK 是否不向后兼容旧的运行时?

标签 .net wpf

我们已经在我们的机器上安装了 .NET 桌面运行时 6.0.1。构建发生在一个 docker 容器中,图像构建在 mcr.microsoft.com/dotnet/sdk:6.0-windowsservercore-ltsc2022 上,显然已更新到 SDK 6.0.102。 现在我们的应用程序将在启动时崩溃并提示

Unhandled exception. System.IO.FileLoadException: Could not load file or assembly 'PresentationFramework, Version=6.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)

本地构建工作正常,我安装了 SDK 6.0.101。

项目中的目标框架定义为

<TargetFramework>net6.0-windows</TargetFramework>

所以我认为它应该在任何 .NET 6.0 上运行,而不仅仅是在 6.0.2 上运行,无论它是用哪个 SDK 构建的。 根据MS Docs它甚至应该默认在 6.1 上运行,除非不同的 <RollForward>策略已定义。

我们缺少什么?

编辑: 它一定是 WPF 的东西,因为构建在该容器上的控制台应用程序工作得很好......

最佳答案

这似乎是 .net 6.0.2 中的一个已知错误

见: https://github.com/dotnet/core/issues/7172#issuecomment-1034105137

要解决这个问题,您可以试试这个: https://github.com/dotnet/winforms/issues/6663#issuecomment-1034371295

或者直接使用 sdk:6.0.101-windowsservercore-ltsc2022 镜像直到发布固定版本

关于.net - .NET SDK 是否不向后兼容旧的运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71066326/

相关文章:

.net - 如何在单个设置中合并 exe 和 msi 文件?

c# - 邪恶的 JUnit 日期技巧 - 在 C# 中你会如何做到这一点?

c# - 如何在 .net 中将 int 转换为 decimal

wpf - 单击/触摸 PART_Textbox 时切换日期选择器日历

c# - 在 tabitems 中加载列表框 - 使用哪个事件?

c# - Json文件请求产生“(413)请求实体太大”。

c# - 将 List.foreach 替换为 LINQ

c# - UserControl 使用的内存是否存储在堆中?

c# - 如何在我的列表框中的每个 ListBoxItem 之间放置一个分隔符?

c# - 在 LiveChart 中自定义起始索引