最初にいくつかの背景。 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.
興味深いのは、プロジェクトファイルを見ると、v10を参照していることです。これは、Visual Studio 2012を使用していないため理にかなっています。
このエラーは、私たちの何人かを一度に襲い、数か月たっても変更されていない古いコードブランチにも影響を与えました。
混乱を招くようなアップデートがマシンにプッシュされたのではないかと疑っていますが、どうすればいいのかわかりません。
短期的な解決策は、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:\Program Files (x86)\MSBuild\12.0\Bin
にあるMSBuild.exeの新しいバージョンを使用することでした。それをやると、すべてのターゲットエラーが消えました。
EDIT 1
コメントで述べたように、MSBuildの新しいバージョンにはそれぞれ新しいディレクトリがあります。 Visual Studio 2015の場合は、C:\Program Files (x86)\MSBuild\14.0\Bin
を使用します。
EDIT 2
コメントで述べたように、Visual Studio 2017の場合は、C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe
を使用します。
VS2012がインストールされていないビルドサーバーがある場合は、これを修正できます
a)ソリューションに MSBuild.Microsoft.VisualStudio.Web.targets パッケージをインストールし、
b).csprojファイルの次の行を置き換えます。
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
この行はnugetパッケージを指しています
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />
編集
@joedragonsが指摘しているように、更新された行のバージョンはnugetパッケージのバージョンと一致する必要があります。つまり、現在のバージョンのtargets.11.0.2.1
をtargets.x.x.x.x
に置き換えます。
この問題の簡単な解決策:
次のパスに移動します。
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio
Visual Studio 2010、2012、または2013のインストールに応じて、最新バージョンV10.0、v11.0、v12.0が表示されます。
WebApplications
フォルダーを最新バージョンのディレクトリのいずれかからコピーして、他のディレクトリに貼り付けます。
問題を解決する必要があります。
無料の Visual Studio 2012 Shell(Isolated) をインストールすると、WebApplications v11 MSBuildファイルがインストールされることがわかりました。 Visual Studio 2012のフルインストールよりも軽く、ライセンスの問題はありません。
ワオ。ビルドマシンで同じことが起こるのを見ました。 VS2010を使用し、.NET 4.0をターゲットにします。プロジェクトファイルは、これらのターゲットのv10.0バージョンを明示的にインポートします。コードに変更を加えることなく、昨日はビルドは正常でしたが、今日はv11.0バージョンが見つからないという苦情で失敗しています。 .NET Framework 4.5.1は、昨夜このビルドマシンに自動更新としてインストール/更新されました。パラメーター(またはenv。変数)を使用してv10.0を強制しますが、これには確かに驚きがありました...
更新:さらに奇妙なことに、今日のバージョンのmsbuildはslnファイルの最初の行を使用してデフォルトで使用するVisualStudioVersionを決定しているように見えますが、昨日のバージョンではそうではなかったようです:
Format Version 12.00
これを手動で11.00に変更してテストし、ビルドが再び機能するようになりました。
私たちの場合、2010/4.0のすべてをターゲットにして構築しているにもかかわらず、一部の開発者はVS2012の準備をしています(MSはプロジェクトファイルに互換性があると主張しているため)。 VS2012。今日まで、それは問題を引き起こしていませんでした。
同じ問題がありました。上記のソリューションを通過することで修正されました。この問題は、ビルドサーバーで適切なバージョンのVisual Studioツール(BuildTools)が利用できないために発生します。上記で正しく指摘したように、これはBuildToolsをインストールすることで解決できますが、私の場合はオプションではありません。
別の選択肢があります-Nugetを使用します
Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3
スタートアッププロジェクトを特定し、使用しているVisual Studioのバージョンに基づいてweb.targetsをインストールします。必要な変更を含む次のファイルが変更されます
Packages.configで:
<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />
.csprojで:
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />
お役に立てれば!!!幸運を、
乾杯、
ハックしますが、c:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\WebApplications *。*をc:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0にコピーすることで解決しました\ WebApplications *。*
11月末に、TeamCityインストールまたはMSBuildインストールの構成またはソースコードを変更せずにこのエラーが発生しました。ビルドサーバーにはVisual Studioもインストールされておらず、VS2010からVS2012への変更は8月末に問題なく行われました。
私のMSBuildバージョンは4.0.30319.18408で、ビルドサーバーはTeamCity v6.5.3がインストールされたWindows Server 2008 R2 SP1です。
影響を受けていない別のビルドサーバーからv11フォルダーをコピーするだけで、この問題を解決しました。
私の推測では、これは次の2つの方法で発生した可能性があります。
V11-folderの削除をトリガーする何かが更新されました。 .NETへのWindows Updateか何かでしょうか?
TeamCity/MSBuild構成をv10からv11に変更したため、v11が存在しなかったためビルドが機能しなくなりました。
12月3日に.NET Framework 4.5.1の更新プログラムを入手しましたが、それが理由でしょうか?
Brgds
ジョナス
最近、同じ問題に悩まされています。そして私の結論は、VSのすべてのバージョン(v10、v11、v12)がMSBuildBinPath
のようなビルド変数のパスを変更するということです。
したがって、VSの正確なバージョンを指定することは、適切なバージョンのファイルがインストールされていない可能性があるため、ハックではありません。そのため、パラメータを指定し、マシンに存在するターゲットを使用する方が良いでしょう。
まれに、特定のバージョンのVSおよびWeb配置パッケージをインストールする必要がある場合があります。私の場合、問題を解決するにはバージョンだけで十分でした。
次のようにVisualStudioVersionプロパティを追加できます。
<ItemGroup>
<ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
<Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
</ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>
これを解決する方法を探していたので、ほとんどの人が、欠落しているMSBUILDフォルダーをコピーするか、何らかのバージョンのSDKをインストールすることを推奨しました。
幸いなことに、ドノバンブラウンによるこの非常に役立つ投稿を見つけました: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors !
一言で言えば、アイデアは、ビルドがビルド定義で使用するVisualStudioバージョンを構成することです。
右クリック->「ビルド定義の編集...」
[Procss]-> [3. Advanced]に移動します
「MSBuild Arguments」を設定します
/p:VisualStudioVersion=12.0