84

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

4

11 に答える 11

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 Studio 2017 の場合はC:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe.

于 2013-11-07T01:43:13.850 に答える
55

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

于 2014-10-28T03:07:44.030 に答える
23

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

次のパスに移動します。

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

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

WebApplicationsどちらかの最新バージョンのディレクトリからフォルダをコピーし、もう一方に貼り付けます。

あなたの問題は解決されるはずです。

于 2015-04-15T10:49:29.337 に答える
12

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

于 2014-11-11T07:22:13.653 に答える
8

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

于 2014-01-15T16:57:51.753 に答える
3

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

于 2014-02-28T10:14:16.997 に答える
1

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

私の MSBuild バージョンは 4.0.30319.18408 です。私のビルド サーバーは、TeamCity v6.5.3 を搭載した Windows Server 2008 R2 SP1 です。

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

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

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

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

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

Brgds

ジョナス

于 2013-12-12T08:30:17.847 に答える
0

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

幸いなことに、Donovan Brown による次の非常に役立つ投稿を見つけました

簡単に言うと、ビルド定義でビルドが使用する VisualStudio のバージョンを構成するという考え方です。

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

「プロセス」->「3.高度な」に移動します

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

/p:VisualStudioVersion=12.0
于 2017-03-08T10:50:36.513 に答える
0

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

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>
于 2016-04-13T09:47:11.353 に答える