まず、背景を説明します。 2012年末にvs2008のソリューションをvs2010に移行しましたが、まだ.NET 3.5をターゲットにしています。 (私はここでは最新かつ最高のものしか知りません!)
数週間前にこのエラーが発生するようになるまでは、このセットアップで何の問題も発生していませんでした。
"foo.csproj" (Rebuild target) (16:5) ->
C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
興味深いのは、プロジェクトファイルを見ると、Visual Studio 2012を使用していないため、v10を参照していることです。
このエラーは私たち数人が一度に、しかも何ヶ月も変更されていない古いコードブランチで発生しました。
何かアップデートが私たちのマシンにプッシュされて混乱したのだと思いますが、どうしたらいいのかわかりません。
短期的な解決策としては、VS 2012をインストールして使用しないことですが、それよりももう少しすっきりしたものを望んでいます。
Visual Studio 2013で同じ問題に遭遇しました。それは、私がコマンドラインからMSBuildの古いバージョン(.NET Frameworkに同梱されているもの)を使用していたことが判明しました。Microsoftは現在、MSBuildをVisual Studio自体の一部として、また別のインストーラー(http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx)としてもリリースしています。
解決策は、C:³ Files (x86)³ ³ MSBuild12.0Bin
にある新しいバージョンの MSBuild.exe を使用することでした。その結果、すべてのターゲットのエラーが消えました。
編集 1
コメントにもあるように、MSBuildのバージョンが新しくなるたびに新しいディレクトリが作成されます。Visual Studio 2015の場合は、C: \Program Files (x86)\MSBuild14.0Bin
を使用します。
EDIT 2
コメントにもありますが、Visual Studio 2017の場合は、C:୧Program Files (x86)↪Microsoft Visual Studio2017↩ฺ<Edition>゙MSBuild.exe
を使用してください。
11月末にTeamCityのインストールやMSBuildのインストール、ソースコードのいずれも変更せずにこのエラーが発生しました。私のビルドサーバーにはVisual Studioはインストールされておらず、VS2010からVS2012への変更も8月末に行いましたが、その時は何の問題もなく終了しました。
MSBuildのバージョンは4.0.30319.18408で、ビルドサーバーはWindows Server 2008 R2 SP1、TeamCity v6.5.3を使っています。
他のビルドサーバーからv11フォルダをコピーすることで解決しましたが、そのサーバーは影響を受けませんでした。
私の推測では、この現象は2つの方法で起こったと思われます。
1.何かが更新され、それがv11-folderの削除の引き金となった。NETのWindowsUpdateか何かでしょうか?
2.2. TeamCity/MSBuildの設定がv10からv11に変更され、v11が存在しないためビルドができなくなりました。
12月3日に.NET Framework 4.5.1へのアップデートがありましたが、それが原因でしょうか?
ページ
ヨナス
最近、同じような問題で行き詰まっています。そして私の結論は、VSのすべてのバージョン(v10、v11、v12)は、MSBuildBinPath
のようなビルド変数のパスを変更することです。
そのため、VSの正確なバージョンを指定することはハックではありません。なぜなら、適切なバージョンのファイルさえインストールされていないかもしれないからです。そのため、パラメータを指定し、マシンに存在するターゲットを使用する必要があります。
まれに、特定のバージョンのVSとWeb Deployパッケージのインストールが必要な場合があります。私の場合は、バージョンだけで解決しました。