この件は何で起きたのか
昨年の VisualStudio2017 のアップデートの 15.9.2 を適用したら MSTest のテストをテストエクスプローラから実施できなくなった。
MSTest のコマンドで実施するしか手が無くなって駆動開発が死ぬ。つらい。
という話です。
ソースは?
このアップデートで死ぬのは次の様な環境を構築している人です。
- .NET のバージョンにより出力を切り分けるタイプのライブラリで、新しいバージョンでその切り分けられて出力したクラスにアクセスできない場合。
- 前述のライブラリを .NET 3.5.x 以下のプロジェクトに使用している場合。
具体的には Theraot.Core みたいな TaskBridge 系のライブラリのうち、.NET 4.0 以降では切り分けてTaskクラスを出力しないタイプを .NET 3.5.x 以下のプロジェクトに使用している場合です。
具体的な症例
.NET Framework 3.5 環境下で MSTest のプロジェクトを作成し、 VisualStudio 2017 のテストエクスプローラ上から テストの項目を右クリックより実行する。
VisualStudio 2017 15.8 上からでは実行することができるが、 15.9 上だと次のエラーが発生する様で実行することができない。
Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException: Framework35 はサポートされていません。.Net Framework 3.5 を対象とするプロジェクトでは、Framework40 を使用して CLR 4.0 の "互換モード" でテストを実行してください。
つまり、.NET 3.5 でコンパイルすると テストエクスプローラからテストできないよってエラーである。
これの問題は、 VisualStudio2017 15.8 ではテストが実施出来たということで、アップデートにより .NET 3.5 のテストを 実施することができなくなったのである。
確認方法
Net35TestSample をcloneしてテストエクスプローラに表示されるテストを実行してみてください。できないです。
で何が言いたかったというと
誰か .NET 3.5に依存したプロジェクトを .NET 4.0 で実行する方法知りませんか?