442

ビルド サーバーでプロジェクトをビルドしようとすると、次のエラーが表示されます。

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

ビルド サーバーに Visual Studio 2010 をインストールして、数か月前にこの問題を解決しました。しかし、今、私は新しいサーバーを最初からセットアップしています。この問題を解決するためのより良い解決策があるかどうかを知りたい.

4

23 に答える 23

213

質問のタイトルに答えるには(ただし、取得している出力に関する質問ではありません):

次のフォルダーを開発マシンからビルド サーバーにコピーすると、Web アプリケーションだけの場合はこれが修正されます。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications

ビルドの破損状況に応じて x86 を削除します。他のプロジェクト タイプがある場合は、おそらく msbuild フォルダー全体をコピーする必要があります。

于 2011-03-17T19:36:12.710 に答える
100

VS がインストールされていない場合、WAP の構築と公開はサポートされていません。そうは言っても、本当に VS をインストールしたくない場合は、下のすべてのファイルをコピーする必要があります%ProgramFiles32%\MSBuild\Microsoft\

Web 配置ツールもインストールする必要があります。それだと思います。

于 2010-10-22T01:06:18.493 に答える
79

UPD:VS2017の時点で、この問題を完全に排除するビルドツールのワークロードがあります。@SOReaderの回答を参照してください。

ビルドサーバーで何も変更したくないが、プロジェクトをソース管理から直接ビルドしたい場合は、必要なバイナリをソース管理下に置くことをお勧めします。プロジェクトファイルのインポートセクションを次のように変更する必要があります。

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

最初の行は、ソリューションディレクトリを基準にした新しい場所からの実際のインポートです。2つ目は、元の行のオフバージョン(Condition="false")であり、Visual Studioがプロジェクトを有効なWebアプリケーションプロジェクトと見なすことができます(これは、VS 2010 SP1自体が行うトリックです)。

C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsソース管理下のtoBuildTargetsフォルダをコピーすることを忘れないでください。

于 2012-10-19T13:20:01.173 に答える
75

NuGet パッケージMSBuild.Microsoft.VisualStudio.Web.targetsを使用して、Visual Studio プロジェクト内でそれらを参照し、Andriy K が提案するように参照を変更することもできます。

于 2013-08-12T09:50:21.983 に答える
56

この投稿に基づいて、 Microsoft Visual Studio 2010 Shell (統合) 再頒布可能パッケージをダウンロードするだけで、ターゲットがインストールされます。

これにより、ビルド サーバーに Visual Studio をインストールする必要がなくなります。

私は今これを試してみましたが、それが機能することを確認できます:

前:

エラー MSB4019: インポートされたプロジェクト "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" が見つかりませんでした。宣言内のパスが正しいこと、およびファイルがディスク上に存在することを確認してください。

インストール後:

【正しくビルドする】

これは明らかに、Visual Studio をビルド サーバーにインストールするよりもはるかに優れたソリューションです。

于 2012-09-12T15:43:06.860 に答える
38

Microsoft.WebApplication.targets 用の"Microsoft Visual Studio 2010 Shell (Integrated) Redistributable Package"および Microsoft.Data.Schema 用の"Microsoft Visual Studio Team System 2008 Database Edition GDR R2"に加えて、上記の最新の Windows SDK .SqlTask​​s.targets は、Visual Studio 2010 をインストールする必要性を軽減するはずです。ただし、VS 2010 をインストールすると、実際には、全体的にダウンロードが少なくなり、最終的に作業が少なくなる可能性があります。

于 2011-08-14T15:45:32.553 に答える
14

Visual Studio 2012 を 2013 に移行する場合は、*.csproj プロジェクト ファイルを edior で開きます。
「Project」タグの ToolsVersion 要素を確認します。

その値を 4.0 から 12.0 に変更します。

  • から

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
    
  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...
    

または、msbuild でビルドする場合は、VisualStudioVersion プロパティを指定するだけです

msbuild /p:VisualStudioVersion=12.0

ソリューション ソース

于 2015-08-29T20:53:59.947 に答える
8

必要なのはこれだけです。わずか103MB。すべてをインストールしないでください

ここに画像の説明を入力

于 2014-02-23T08:54:42.823 に答える
6

私はこれをMS接続で見つけました:

はい、データベースプロジェクトをビルドするには、ビルドマシンにVisualStudio2010をインストールする必要があります。そのためには、VisualStudioの追加ライセンスは必要ありません。

だから、これは私が今持っている唯一のオプションです。

于 2010-10-21T17:03:39.357 に答える
4

ビルド サーバーの場合のように、MSBuild を使用している場合、私にとってうまくいったのは次のとおりです。

以下を変更します。

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

に:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

私のMsbuildコマンドは次のとおりです。*"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

これが誰かに役立つことを願っています。

于 2018-12-21T02:10:31.787 に答える
2

に追加
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

してこれを修正しました
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments

于 2014-11-07T12:36:03.183 に答える
2

私はたくさんの解決策を試しましたが、最終的にはこの答えがうまくいきました: https://stackoverflow.com/a/19826448/431522

基本的に、Visual Studio ディレクトリではなく、MSBuild ディレクトリから MSBuild を呼び出す必要があります。

また、スクリプトのコーディングを容易にするために、MSBuild ディレクトリをパスに追加しました。

于 2015-10-27T10:14:13.810 に答える