gpt4 book ai didi

c# - .Net 5 - WPF,单元测试问题

转载 作者:行者123 更新时间:2023-12-04 11:03:34 24 4
gpt4 key购买 nike

我在玩 .Net 5 时遇到了一些问题,所以我希望有人能对事情有所了解。在大型企业 .Net Framework 解决方案上工作了很多年,.Net Core 似乎已经过去了,我没有接触过它,这可能解释了我的一些困惑......
单元测试引用?
我创建了一个包含 WPF 项目(“WPF 应用程序(.NET)”)和一个单元测试项目(“MSTest 测试项目(.Net Core)”)的解决方案。两者都在其属性页面中设置为“.NET 5”的目标框架。
当我从单元测试项目中引用 WPF 项目时,项目引用旁边会出现一个黄色三角形,并且在错误列表窗口中出现以下错误:

Project 'MyTestWpf.csproj' targets 'net5.0-windows'. It cannot be referenced by a project that targets '.NETCoreApp,Version=v5.0'


我到底如何从 UT 项目中引用 WPF 项目?
类库引用 WPF 类型?
我还创建了一个 .Net 5 类库,它需要引用各种 WPF 类型(控件等),但我不确定如何配置必要的程序集/框架引用(在框架世界中,我只需添加程序集对 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 (F#) 的项目文件中的 SDK header )使用与类库和控制台应用程序相同的 SDK 名称。
因此,在 .NET 5.0 及更高版本中,您不必指定 Sdk="Microsoft.NET.Sdk.WindowsDesktop"对于任何使用 WPF 和 Windows 窗体的项目,但您必须明确指定 <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>

关于c# - .Net 5 - WPF,单元测试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64804446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com