我真的很喜欢新的.csproj
格式。它比可怕的(有限的)project.json
好得多。
但是,有一件事我想解决。我已将我的(多个)测试项目合并到一个多目标项目中。
<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>
但是,在Visual Studio中的测试资源管理器中似乎没有任何工具来选择目标框架 - 它总是只运行第一个。我找到了一种解决方法 - 添加一个具有特定框架的<TargetFramework>
元素......
<TargetFramework>net35</TargetFramework>
但是,有没有办法选择目标框架而不需要手工编辑MSBuild(.csproj
)文件?我正在寻找GUI中的一些选项来执行此操作 - 特别是因此我不必记得编辑.csproj
文件以便在调试测试之前切换框架或者记住必须先删除此行发布。
答案 0 :(得分:5)
我知道问题是关于VS的,但我认为在dotnet tests
节点中定位多个框架<TargetFrameworks>
命令will run tests for all frameworks时很有用:
> dotnet test
...
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1)
...
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1)
...
NCrunch还可以识别多个目标,并自动为每个目标运行测试:
答案 1 :(得分:0)
使用'或'运算符在runsettings文件中使用TargetFrameWorkVersion。
答案 2 :(得分:0)
目前最佳选择是更改csproj中目标框架的顺序。
bool
如果要调试net45框架的单元测试,则需要将其更改为:
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
在Visual Studio中执行此操作的UI相对容易实现,但截至此答案,他们还没有这样做。
答案 3 :(得分:0)