私は新しい.csproj
フォーマットが大好きです。それは恐ろしい(限定された)project.json
よりもはるかに優れています。
しかし、私が解決しようとしていることが1つあります。 (複数の)テストプロジェクトを単一のマルチターゲットプロジェクトにマージしました。
<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>
ただし、VisualStudioのテストエクスプローラーにはターゲットフレームワークを選択するためのツールがないようです。常に最初のフレームワークを実行するだけです。回避策を見つけました-特定のフレームワークで<TargetFramework>
要素を追加します...
<TargetFramework>net35</TargetFramework>
しかし、MSBuild(.csproj
)ファイルを手動で編集せずにターゲットフレームワークを選択する方法はありますか?これを行うためのGUIのオプションを探しています。具体的には、テストをデバッグする前にフレームワークを切り替えるために.csproj
ファイルを編集したり、前にこの行を削除したりする必要がないようにする必要があります。リリース。
質問がVSに関するものであることは知っていますが、複数のフレームワークをターゲットにする場合に役立つと思いますdotnet tests
コマンド すべてのフレームワークのテストを実行します in <TargetFrameworks>
ノード:
> 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 複数のターゲットを認識し、すべてのターゲットに対してテストを自動的に実行することもできます。
'または'演算子を使用して、runsettingsファイルでTargetFrameWorkVersionを使用します。
現在の最良のオプションは、csproj内のターゲットフレームワークの順序を変更することです。
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
Net45フレームワークの単体テストをデバッグする場合は、次のように変更する必要があります。
<PropertyGroup>
<TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>
Visual Studioでこれを行うためのUIは、実装が比較的簡単ですが、この回答の時点では実装されていません。