2

.NET 4.5 に移行しようとしている Web アプリケーション プロジェクトがあります。VS2010 がインストールされたビルド サーバーに TFS からビルドしていますが、これには VS2012 の正しい参照アセンブリもすべて含まれており、.NET 4.5 フレームワークがインストールされています。

プライベート アクセサーを含む単体テスト プロジェクトを実行すると、ビルドが次のエラーで失敗します -

System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\LocalPath\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'

ただし、$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\TeamTest\Microsoft.TeamTest.Targets ファイルを変更すると、ビルドは成功します。

<UsingTask TaskName="BuildShadowTask" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\TeamTest\Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll"/>

<UsingTask TaskName="BuildShadowTask" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll"/>

VS2012 でプライベート アクセサーを使用することはできなくなりましたか? もしそうなら、なぜ Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll v11 は失敗し、v10 は成功するのでしょうか?

EDITこれは、実際にVS2012がインストールされているマシンでコンパイルされるため、アセンブリまたはレジストリキーが欠落しているという事実に違いありません。ビルド ログを見ると、両方のインスタンスで v11 フォルダーから BuildShadowTask が読み込まれています。私の質問は、Visual Studio 2012 をインストールせずにプライベート アクセサーを使用することは可能ですか? もしそうなら、この目標を成功させるには、どのような変更を加える必要がありますか?

4

1 に答える 1

1

プライベート アクセサーは VS2012 で廃止されたため、VS2012 を使用してプライベート アクセサーを作成することはできません。これが、11.0 dll でのタスクの失敗の理由です。推奨される代替手段は、PrivateObjectクラスまたはInternalsVisibleTo属性を使用することです。

于 2013-02-23T03:24:12.693 に答える