ファイルが実際にv10を参照しているときに、v11.0 \ WebApplications \ Microsoft.WebApplication.targetsが見つかりませんでした


84

最初にいくつかの背景。2012年の終わりに、vs2008ソリューションをvs2010に移行しましたが、それでも.NET3.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をインストールして使用しないことでしたが、それよりも少しクリーンなものが欲しいと思っています。


17
MSBuildコマンドラインに「/ p:VisualStudioVersion = 10.0」を追加すると、これがなくなることがわかりましたが、それでもハックのように感じます。
drs9222 2013

回答:


116

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)。

解決策は、にある新しいバージョンのMSBuild.exeを使用することでしたC:\Program Files (x86)\MSBuild\12.0\Bin。それを行うと、すべてのターゲットエラーが消えました。

編集1

コメントで述べたように、MSBuildの新しいバージョンごとに新しいディレクトリが追加されます。Visual Studio 2015の場合は、を使用しますC:\Program Files (x86)\MSBuild\14.0\Bin

編集2

コメントで述べたように、Visual Studio2017の場合はを使用しますC:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe


1
TeamCityフォーラムに、新しいパス(NuGet設定の処理方法)を組み込むようにリクエストを投稿しました。うまくいけば、彼らはこれに迅速に取り組みます。
David Peden 2013年

1
ブログ投稿内の個別のツールのダウンロードへの直接リンクは無効になりました。正しいリンクは、microsoft.com / en-us / download / details.aspx?id = 40760です。
David Peden 2013年

1
そして、ちょうどそのように、Jetbrainsはバージョン8.0.5で救助に来ます。公式ブログ投稿:teamcitydev.blogspot.com/2013/11/…–
David Peden

1
ローカルのPowershellビルドスクリプトがある場合は、パスに追加するだけです$env:Path = $env:Path + ";C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications"。v4msbuildを使用します(ビルドボックスでもこれを実行できます)
Chris S

4
はい!ありがとう-これは適切な解決策です。
Josh M.

52

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.1targets.x.x.x.x、現在のバージョンのために。


1
同様に、素晴らしいアドバイス!
ケビンOBEE

2
おかげで、素晴らしい解決策
Pavel

1
当たり前のことかもしれませんが、置き換える行には、インストールするパッケージのバージョンが含まれている必要があります。インストールしたものは12.0.4だったので、交換用のインポートを入れると同じエラーが発生しました。... Web.targets.12.0.4 \ ... all good =)に切り替えたとき、どうもありがとうございました!
joedragons 2015

2
この回答のパートbはもう必要ありません。何らかの理由で、SOは不要な詳細を削除するための私の編集を拒否しました。
bbodenmiller 2017年

1
おかげで私は最後のバージョンMSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3で同じことをしました
Ahmed Samir

23

この問題の簡単な解決策:

次のパスに移動します。

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio

Visual Studio 2010、2012、または2013のインストールに応じて、最新バージョンのV10.0、v11.0、v12.0が表示されます。

WebApplications最新バージョンのディレクトリのいずれかからフォルダをコピーして、他のディレクトリに貼り付けます。

問題を解決する必要があります。


1
このIMOは最良かつ単純な解決策です:)
ギデオン2015年

もちろん、ビルドサーバーでこれを行うには実際にアクセスできる必要があります。
デイブ

1
...しかし、なぜこれを手動で行う必要があるのですか?おかげで..これはVS21017で私のためにそれを修正しました(私にとってはVS2017のみで新規インストールでした-今はまだIISをインストールしていないためだと思います)
Piotr Kula

V14.0にコピーする場合にも機能します。
Uwe Keim 2017

12

無料のVisualStudio 2012 Shell(Isolated)をインストールすると、WebApplications v11MSBuildファイルがインストールされることがわかりました。Visual Studio 2012のフルインストールよりも軽量で、ライセンスの問題はありません。


8

ワオ。ビルドマシンでも同じことが起こるのを見ました。VS2010を使用し、.NET4.0をターゲットにします。プロジェクトファイルは、これらのターゲットのv10.0バージョンを明示的にインポートします。コードに変更を加えることなく、昨日はビルドは問題なく、今日はv11.0バージョンがないという苦情で失敗しています。.NET Framework 4.5.1は、自動更新としてこのビルドマシンに昨夜インストール/更新されました。パラメータ(または環境変数)を使用してv10.0を強制しますが、これは確かに驚きました...

更新:さらに奇妙なのは、今日のバージョンのmsbuildがslnファイルの最初の行を使用して、デフォルトで使用するVisualStudioVersionを決定しているように見えるのに対し、昨日のバージョンはそうではなかったということです。

Format Version 12.00

これを手動で11.00に変更してテストしたところ、ビルドが再び機能し始めました。

私たちの場合、2010 / 4.0のすべてをターゲットにして構築していますが、一部の開発者はVS2012の準備をしています(MSがプロジェクトファイルに互換性があると主張したため)。この特定のソリューションは(数か月前に)最後に保存されました。 VS2012。今日まで、それは問題を引き起こしていませんでした。


1
これは、まったく異なる状況についてのように思われる最高投票の回答よりもはるかに役立ちました。
LambdaCruiser 2014年

ここでも同じ@LambdaCruiserこの回答は大いに役立ちました。.slnファイルの履歴を確認し、2行# Visual Studio 2010目で最初の行を読み取りFormat Version 12.00ました。ある段階でvs2012にアップグレードしましたが、vs2010に切り替えました。ウェインのように、この問題はCIサーバーでWindows Updateを実行した後に発生しました
2014

6

私も同じ問題を抱えていました。上記の解決策を実行することで修正されました。この問題は、適切なバージョンのVisual Studio Tools(BuildTools)がビルドサーバーで利用できないために発生します。上で正しく指摘したように、これはBuildToolsをインストールすることで解決できますが、私の場合はオプションではありません。

別の方法があります-Nugetを使用します

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3

起動プロジェクトを特定し、使用されているVisualStudioのバージョンに基づいて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')" />

お役に立てれば!!!幸運を、

乾杯、


1
完璧な答え-csprojファイルを使ってサルをしたり、ビルドサーバーにコピーしたりする必要がなくなります。VisualStudioとMSBuild2017の複数のバージョンで機能しました。「WebApplication.targets」行を手動で削除しましたが、nugetは自動的に削除しませんでした。
Gedas Kutka 2018

3

ハックしますが、c:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications *。*をc:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0にコピーして解決しました。 \ WebApplications *。*


1

TeamCityインストールまたはMSBuildインストールの構成やソースコードを変更せずに、11月末にこのエラーが発生しました。私のビルドサーバーにはVisualStudioもインストールされておらず、VS2010からVS2012への変更は8月末に問題なく行われました。

私のMSBuildバージョンは4.0.30319.18408で、ビルドサーバーはTeamCityv6.5.3を搭載したWindowsServer 2008 R2SP1です。

影響を受けていない別のビルドサーバーからv11-folderをコピーするだけで、問題を解決しました。

私の推測では、これは2つの方法で発生した可能性があります。

  1. v11フォルダーの削除をトリガーする何かが更新されました。.NETなどのWindowsUpdateでしょうか?

  2. TeamCity / MSBuild構成をv10からv11に変更する何かが更新され、v11が存在しなかったため、ビルドが機能しなくなりました。

12月3日に.NETFramework 4.5.1のアップデートを入手しましたが、それが理由でしょうか?

Brgds

ジョナス


0

私は最近同じ問題で立ち往生しています。そして私の結論は、VSのすべてのバージョン(v10、v11、v12)は、のようにビルド変数のパスを変更するということですMSBuildBinPath

したがって、適切なバージョンのファイルがインストールされていない可能性があるため、VSの正確なバージョンを指定することはハックではありません。したがって、パラメータを指定して、マシンに存在するターゲットを使用する方がよいでしょう。

まれに、特定のバージョンのVSおよびWebDeployパッケージをインストールする必要がある場合があります。私の場合、問題を解決するにはバージョンだけで十分でした。


0

次のようにVisualStudioVersionプロパティを追加できます。

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>

0

これを解決する方法を探していたとき、ほとんどの人が、不足しているMSBUILDフォルダーをコピーするか、あるバージョンのSDKをインストールすることをお勧めしました。

幸いなことに、私はDonovan Brownによるこの非常に役立つ投稿を見つけました:http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors

一言で言えば、アイデアは、ビルドがビルド定義で使用するVisualStudioのバージョンを構成することです。

右クリック->「ビルド定義の編集...」

「Procss」->「3.Advanced」に移動します

「MSBuild引数」を次のように設定します

/p:VisualStudioVersion=12.0

VS2019で「...編集ビルド定義」を見つけることができない
Laser42
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.