web-dev-qa-db-ja.com

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

最初にいくつかの背景。 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をインストールして使用しないことでしたが、それよりも少しクリーンなものを望んでいます。

78
drs9222

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を使用します。

111
NathanAldenSr

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に置き換えます。

50
Daniel de Zwaan

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

次のパスに移動します。

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

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

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

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

23
samdubey

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

10

ワオ。ビルドマシンで同じことが起こるのを見ました。 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。今日まで、それは問題を引き起こしていませんでした。

8
lesscode

同じ問題がありました。上記のソリューションを通過することで修正されました。この問題は、ビルドサーバーで適切なバージョンの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')" />

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

乾杯、

5
user2964808

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

3
Wolf5

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

私のMSBuildバージョンは4.0.30319.18408で、ビルドサーバーはTeamCity v6.5.3がインストールされたWindows Server 2008 R2 SP1です。

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

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

  1. V11-folderの削除をトリガーする何かが更新されました。 .NETへのWindows Updateか何かでしょうか?

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

12月3日に.NET Framework 4.5.1の更新プログラムを入手しましたが、それが理由でしょうか?

Brgds

ジョナス

1
Jonas

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

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

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

0
Johnny_D

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

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

これを解決する方法を探していたので、ほとんどの人が、欠落している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
0
A. Yosupov