1

MSTest を使用して、ソリューションに対して自動テストを実行します。ソリューションの一部のプロジェクトは .NET 3.5 を対象としており、Newtonsoft.JSON.dll バージョン 4.0.8 を参照しています。他のプロジェクトは .NET 4.0 をターゲットとしており、Newtonsoft.JSON.dll バージョン 4.5.7 の署名付きバージョンを参照しています。MSTest をすべてのテストに対して実行すると、新しいバージョンの Newtonsoft を使用したテストは次のエラーで失敗します。

System.IO.FileLoadException: System.IO.FileLoadException: ファイルまたはアセンブリ 'Newtonsoft.Json、Version=4.5.0.0、Culture=neutral、PublicKeyToken=30ad4fe6b2a6aeed' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)。

しかし、新しいバージョンの DLL を実行するテストだけを実行すると、正常に実行されます。Test/OUT ディレクトリを調べたところ、実行に失敗した場合は Newtonsoft DLL の以前のバージョンのみが存在し、実行に成功した場合は DLL の新しいバージョンのみが存在することが確認されました。

では、どうすれば、1) MSTest に毎回適切なバイナリを強制的にコピーさせるか、2) MSTest に同じバイナリの異なるバージョンを並べて取り込むように強制することができますか?

ティア。

4

1 に答える 1

0

したがって、私の知る限り、コマンド ラインから MSTest を使用するソリューションはありません。MSTest は、すべての /TestContainers をすべての依存関係と共に /Out ディレクトリにコピーします。私の場合、古いバージョンの Newtonsoft.JSON.dll への参照が最初に見つかり、それをコピーしました。次に、他の Newtonsoft.JSON.dll の依存関係を解決したときに、それをコピーしませんでした。

私の解決策は、一度にすべてのアセンブリに対して実行するのではなく、アセンブリごとに MSTEST のインスタンスを実行するようにユーティリティを変更することです。

于 2013-05-24T20:10:05.263 に答える