如何解决.Net 5-WPF,单元测试失败
在使用.Net 5时遇到一些问题,所以我希望有人可以对此有所了解。在大型企业.Net Framework解决方案上工作了多年之后,.Net Core似乎已经过去了,而且我没有接触过它,这也许可以解释我的一些困惑...
单元测试参考?
我创建了一个包含WPF项目(“ WPF应用程序(.NET)”)和单元测试项目(“ MSTest测试项目(.Net Core)”)的解决方案。两者均已在其属性页中设置为“ .NET 5”的目标框架。
当我从单元测试项目中引用WPF项目时,项目参考旁边会出现一个黄色三角形,并在“错误列表”窗口中显示以下错误:
项目“ MyTestWpf.csproj”的目标是“ net5.0-windows”。面向'.NETCoreApp,Version = v5.0'的项目不能引用它
究竟该如何从UT项目引用WPF项目?
引用WPF类型的类库?
我还创建了一个.Net 5类库,它需要引用各种WPF类型(控件等),但是我不确定如何配置必要的程序集/框架引用(在我想使用的Framework世界中)只需将程序集引用添加到PresentationFramework,System.Xaml等)。通过尝试和错误,我确实通过使用项目文件中的以下几行的组合来使它正常工作:-
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<UseWPF>true</UseWPF>
,以及将目标框架从“ net5.0”更改为“ net5.0-windows”。
但是,我不确定实际需要这些组合中的哪一个,或者不确定是否要手动编辑项目文件,如果无法通过Visual Studio完成,那感觉就像倒退了!
解决方法
从 .NET 5.0 开始,为 WPF 和 Windows Forms 创建新项目与在 .NET Core 3.0 和 3.1 中的不同。
从 .NET 5.0 及更高版本开始,为 WPF 和 Windows 窗体创建新项目需要具有特定于操作系统的目标框架名称,以及支持的语言(如 csproj (C#)、vbproj (VB)、fsproj)的项目文件中的 SDK 标头(F#) 使用与类库和控制台应用程序相同的 SDK 名称。
因此,在 .NET 5.0 及更高版本中,您不必为任何使用 WPF 和 Windows 窗体的项目指定 Sdk="Microsoft.NET.Sdk.WindowsDesktop"
,但必须根据需要指定显式 <UseWPF>
和 <UseWindowsForms>
.
例如,这是一个基本的 WinForms 可执行项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows7.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
对于引用 Windows 窗体的单元测试项目,您可以像这个示例一样更新单元测试项目:(注意附加的 <UseWindowsForms>true</UseWindowsForms>
元素)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<IsPackable>false</IsPackable>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.4" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.4" />
<PackageReference Include="coverlet.collector" Version="1.3.0" />
</ItemGroup>
</Project>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。