VS2015 RCでC#テストプロジェクトを作成しました。ローカルでビルドしますが、CIビルドサーバー(TeamCity)でビルドしようとすると、エラーで失敗します。
UnitTest1.cs(2,17):エラーCS0234:名前空間名 'VisualStudio'が名前空間 'Microsoft'に存在しません(アセンブリ参照がありませんか?)[... .Tests.csproj] UnitTest1.cs (9,10):エラーCS0246:タイプまたは名前空間名 'TestMethod'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)[... .Tests.csproj]
明らかにこれは、これらの名前空間(_Microsoft.VisualStudio.QualityTools.UnitTestFramework
_)を含むアセンブリがビルドサーバーにないためです。私のローカルマシンではC:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
にあります。
アセンブリをコードベースの一部になるようにソリューションにコピーすることもできますが、手動でファイルを移動するのはちょっとエレガントなハックのように感じます。私はnugetを探し回って http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/ を見つけました。
Install-Package:パッケージ 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1'をインストールできませんでした。 '.NETFramework、Version = v4.5.2'をターゲットとするプロジェクトにこのパッケージをインストールしようとしていますが、パッケージには、そのフレームワークと互換性のあるアセンブリ参照またはコンテンツファイルが含まれていません
これを解決する最善の方法は何ですか? VS2015でテストプロジェクトを作成しても、必要なすべての依存関係が自動的には含まれないことに驚いていますが、おそらく私は世間知らずです(私は生まれつきのドットネットのようなものです)。
答えは eng.augustoの答え のオプション1に似ています。
Microsoftは、Microsoft.VisualStudio.QualityTools.UnitTestFrameworkの最新バージョンのNuGetを提供していませんが、Visual Studioの一部として提供しています( 通常は C:\ Program Files(x86 )\ Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
ソリューションのサブフォルダーとしてフォルダーMicrosoft.VisualStudio.QualityToolsを作成し、コピーしました
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.xml
ファイルはソースコントロールに追加する必要があります(DLLが通常無視されている場合でも)。
その後、Test.csprojの参照を変更して、新しい場所を参照しました。
うーん、いくつかのアイデアがあるので、あなたのニーズに最適なものを選んでください
私見最初の答えを選びます。NuGetを使用してすべてのパッケージの問題を解決するのが「最善の方法」のようですが、DLLそれは信頼されるべきです。
CやC++などの「古い」言語で使用されているシステムでは、ソースコードと、コードの実行に必要なライブラリをダウンロードするのが一般的であるため、NuGetパッケージは最適なソリューションではないと思います。
最初のオプションを使用すると、常に同じバージョンがあり、ファイルのMD5をチェックして、ビルドサーバーで何が実行されているかを正確に知ることができます。
多分、本当の最良の選択肢は6でしょう。独自のNuGetサーバーを使用してDLLを処理すると、ライブがより素晴らしい信頼できるものになります。
ITチームから開発サーバーからVS2013をアンインストールするように依頼された後、CI/CDプロセスを介して開発サーバーでMSBuildを使用しようとすると、この問題が発生しました。
私のビルド出力では、Word Consideredの行が数行ありました。これが意味することは、ファイルが置かれている可能性のある場所のフォルダーをビルドが検討していることです。これらの行の1つは次のとおりです。
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll", but it didn't exist.
私はMicrosoft.VisualStudio.QualityTools.UnitTestFramework.dllをローカルマシンから開発サーバー上のそのフォルダーにコピーし、エラーは解消しました。