为什么没有<UseWPF>true</UseWPF>

问题描述 投票:0回答:1

我尝试将 WPF 窗口包含到 ConsoleApp 中。 为此,我参考了

  • PresentationCore.dll
  • PresentationFramework.dll
  • WindowsBase.dll

但是当我尝试执行该应用程序时,出现异常

System.BadImageFormatException HResult=0x80131058 消息=可以 不加载文件或程序集'PresentationFramework,版本=8.0.0.0, 文化=中性,PublicKeyToken=31bf3856ad364e35'。参考 无法加载程序集来执行。 (0x80131058)
来源= StackTrace:

内部异常1:BadImageFormatException:无法加载引用 组装执行。

我知道我可以包含

<UseWPF>true</UseWPF>
,但我想了解为什么这是必要的,并且引用 WPF 框架(就像在 .NET 4.8 中一样)是不够的。

谢谢你的解释。

c# wpf .net-core .net-8.0
1个回答
0
投票

来自 .NET Desktop SDK 项目的 MSBuild 参考:启用 .NET Desktop SDK 部分:

要使用 WinForms 或 WPF,请配置您的项目文件。 .NET 5 及更高版本:

  • 针对 .NET SDK
    Microsoft.NET.Sdk
  • TargetFramework
    设置为 Windows 特定的目标框架名称,例如
    net6.0-windows
  • 添加 UI 框架属性(或两者,如有必要):
    • UseWPF
      设置为
      true
      以导入并使用 WPF。
    • UseWindowsForms
      设置为
      true
      以导入并使用 WinForms。
  • (可选)将
    OutputType
    设置为
    WinExe
    。这会生成一个应用程序而不是一个库。要生成库,请忽略此属性。

所以基本上这就是应该如何设置项目以使用相应的组件。

© www.soinside.com 2019 - 2024. All rights reserved.