web-dev-qa-db-ja.com

VS2017は、ファイルまたはアセンブリMicrosoft.VisualStudio.QualityTools.UnitTestFramework.dllまたはその依存関係の1つをロードできませんでした

VS2017で古いソリューションを開こうとすると、古いユニットテストプロジェクトがあり、ビルド時に問題が発生します。

このテストプロジェクトをビルドすると、次のエラーが表示されます:

ファイルまたはアセンブリ 'file:/// C:\ Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

プロジェクトの参照を確認しましたが、Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllを参照しているようです。さらに、コードエラーはありません。依存関係の1つが見つからない場合、どのようにすればわかりますか?

19
Blake Rivell

VS2010で最初に開発されたプロジェクトで同様の問題があり(追加メッセージThe "BuildShadowTask" task failed unexpectedly)、最後の数時間をビルドプロセスのさらに別のレガシーファセットについて学習することになりました。

プライベートアクセサファイル.accessor)を扱っている可能性があります。これらは VS2012で非推奨元のソース 404)です。これは、 VS2010チームからの発表 でこれらの機能に取り組んでいないという予兆でした。

また、誤ったバージョンのUnitTestFrameworkへの誤った参照を処理している可能性もありますが、NuGetの復元でこれを修正する必要があります。そうでない場合は、 このGitHubスレッド を参照して修正するか(refをパブリックフォルダーに手動で変更します)、または新しいMSTest.TestAdapterおよびMSTest.TestFrameworkパッケージに移動します( MSDNサポートを参照してくださいスレッド )。

溶液

  1. 単体テスト.csprojを編集し、アイテム参照を<Shadow Include="Test References\namespace.accessor" />から<None Include="Test References\namespace.accessor" />Shadow => None)に変更します。
  2. さらに良いことに、ユニットテストプロジェクトの.accessorフォルダからすべてのTest Referencesファイルを削除するだけです。

理想的には、個別の懸念事項に再設計するか、プロパティをinternalに変更し、 InternalsVisibleToAttribute


何らかの理由でプライベートメソッドのテストを引き続きサポートする必要がある人のために、同じ投稿では論理的な質問"What is available for me then?"に対して次の提案を提供しています。

内部APIのテストを継続したい場合は、次の3つのオプションがあります。

  1. Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObjectクラスを使用して、コード内の内部およびプライベートAPIへのアクセスを支援します。これは、Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllアセンブリにあります。
  2. コードを反映して内部またはプライベートAPIにアクセスできるリフレクションフレームワークを作成します。
  3. アクセスしようとしているコードが内部の場合、テストコードが内部APIにアクセスできるように、InternalsVisibleToAttributeを使用してAPIにアクセスできる場合があります。

ただし、言語チームによって追加された新機能のコード生成に代わるものはありません。 TestMethodスタブを作成してから、内部コードを削除できます。スタブ自体を保持するだけです。


これをつなぎ合わせてくれた参考資料/ソース:

40
brichins

プロジェクト参照フォルダーを右クリックします。参照を追加>アセンブリ>拡張。 Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1を確認し、古いバージョンのチェックを外します。

5
John H

これはVisual Studio Enterprise 2015に関連し、新しいロードテストの追加に失敗しました:「アセンブリ 'Microsoft.VisualStudio.QualityTools.LoadTest、バージョン= 14.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3aが見つかりません」と表示されます。

パブリックアセンブリにインストールされたアセンブリはバージョン10.0.0.0として表示されますが、GACにはありませんが、

GACには10.1.0.0しかありませんでした。 GACを10.0.0.0で更新し、VS 2015を再起動すると、これに類似した問題が解決するはずです。

より適切な推論のための詳細、システムアセンブリパスおよびプロジェクトパスDLLパス......\Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies\Microsoft。 VisualStudio.QualityTools.UnitTestFramework.dll

.CSProj参照バージョン