MsTest で .NET2.x 以前向けアセンブリを使った混合モードで単体テストを行う方法
古いライブラリを使ったプロジェクトの単体テストコードを書いていてハマったお話。
前提知識
古いライブラリを現在の環境で動かそうとすると下記の例外が出る。
混合モード アセンブリはバージョン v2.0.50727 のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。
解決策は実行ファイルのマニフェスト(xxx.exe.configなど)に混合モードを許可する旨を記述すること。
<configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration>
今回の問題
混合モード アセンブリはバージョン v2.0.50727 のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。
解決策
この場合、実行ファイルはこのプログラムではなく MsTest。
マニフェストどこー?
Visual Studio 2010*1
- C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MsTest.exe.config
Visual Studio 2012*2
- C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config
上記のファイルに useLegacyV2RuntimeActivationPolicy を記述すればOKです。
参考
この問題の解決に以下のサイトを参考にさせて頂きました。