web-dev-qa-db-ja.com

MS-Build 2017 "Microsoft.WebApplication.targets"が見つかりません

Buildserver(jenkins)をVisual Studio 2015から2017にアップグレードしようとしています。MS-Buildを使用してビルドしています。この answer の説明に従って、MS-Buldツールをダウンロードしてインストールしました。プロジェクトをコンパイルすると、Microsoft.WebApplication.targetsが見つからないというエラーが表示されます。

詳細なエラー:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

MS-Buildディレクトリで検索を実行しました。

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

ご覧のように、このファイルは古いコンパイラバージョン用に存在しますが、v15.0にはありません。

また、ビルドサーバーにVisual Studio 2017をインストールしました。 Visual Studio 2017でコンパイルすると、プロジェクトはビルドに成功します。

この問題を解決する方法はありますか?可能な解決策の1つは、C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsポイントから古いv14.0ファイル(C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplicationsの下にある)へのシンボリックリンクを生成することです。

どうも

59
Moerwald

「Web開発ビルドツール」のワークロードが不足しているように見えます: Microsoft.VisualStudio.Workload.WebBuildTools

here (VS2017)または here (VS2019)からビルドツールインストーラーをダウンロードして実行することでインストールできます

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

または、vs_buildtools.exeを開いて、GUIで「Web開発ビルドツール」コンポーネントを選択します。

screenshot from GUI

82
Martin Ullrich

上記の受け入れられた答えは、少なくとも私にとって技術的に正しいだけで不完全で、少し混乱を招き、Visual Build Professionalを機能させるために1つの追加ステップが必要でした。

  1. vs_buildtools.exeは技術的には存在しません。 create そのファイルがどこにあるかを尋ねる質問をしなければなりませんでした。 vs_buildtools.exeがvs_buildtools _ *******。exeであり、実際のインストールプログラムであることは明らかではありませんでした。さらに、上記の「-add ***」は単なる省略形です。 GUIに移動して、両方のワークフロータスクを確認できます。それは同じことをします。 vs_buildtoolsファイルは必要ではありませんが、持っていました。

  2. VSB Proはまだプロジェクトをビルドしませんでした。上記と同じエラーがスローされました。秘密のソースは、単純にC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0WebApplicationsfolderをC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0にコピーすることでした。その後、プロジェクトを再構築しましたが、すべて順調でした。 WebApplication.targetsファイルを予想される場所に配置しました。

マイクロソフトができなかった理由は私を超えています。また、なぜ別のインストール。 VS17は膨大な量のものをインストールします。ビルドツールは、いつものように暗示されています。なんでも。

うまくいけば他の人に役立つように、私はこの答えを投稿しています。私はわなに陥り、プロジェクトが構築されていないため、かなりの時間を失いました。この答えが物事を少し明確にすることを願っています。

70

Visual Studio 2015から2017にアップグレードした後、同様の問題が発生しました。Webアプリケーションプロジェクトをロードしようとすると、エラーメッセージがスローされました。

インポートされたプロジェクト「C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets」が見つかりませんでした。また、フォールバック検索パスで$(VSToolsPath)-"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v15.0"の "WebApplications\Microsoft.WebApplication.targets"を見つけようとしました。これらの検索パスは、「C:\ Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_558e146f\devenv.exe.config」で定義されています。宣言内のパスが正しいこと、およびファイルがディスク上の検索パスの1つに存在することを確認してください。

私が見つけたこのエラーの解決策 here

私の場合、.csprojファイルには次の行が含まれていました。

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

VSToolPathタグのv14.0v$(VisualStudioVersion)に置き換えた後、プロジェクトをロードできました。

また、上記のリンクのソリューションが示すように、VisualStudioVersionタグのv14.0v10.0に置き換えました。しかし、私にとっては、14.0のままにしておくことでも機能しました。

最後に、これらの行がどのように見えるかを示します。

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

.csprojにこれらの行がまったくない場合は、この行の前に手動で追加する必要があります。

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

私の場合(わずかに異なるエラーメッセージですが、同じ問題)、それはこの行でした:

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

2011年以降のVisual Studioバージョンで作成されたプロジェクトには、VSToolsPath再定義の行が含まれているようですが、古いファイルには含まれていません。 Visual Studioは、新しいVSバージョンにアップグレードするときにそれらを自動的に追加することはありません。そのため、存在しない場合は追加する必要があります。

この情報のソース: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664をクリックしてコメントをもっと見るディスカッションスレッド全体を表示します-残念ながら、この "more"セクションのコメントに直接リンクすることはできません。)

15
Tobias

chocolatey を使用すると、WebBuildToolsオプションがすでに含まれている2017ビルドツールを簡単にインストールできます。 installed itになったら、管理コマンドプロンプトに次のように入力します。

choco install visualstudio2017buildtools -y

VS 2019の場合も同様です:

choco install visualstudio2019buildtools -y
9
alastairtree

WebApplicationsフォルダーをコピーします

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

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

または、ビルドスクリプトでコンパイルする前に次の行を追加します

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

必ず昇格された権限で実行してください

7
adeel41

vS 2017 pro、asp.net MVCアプリケーションを作成し、Jenkinsでビルドする方法

開発マシンとビルドサーバーの両方で2017 vs proを使用

VisualStudioが15に設定されていることを確認します
インポート Project = "$(MSBuildExtensionsPath32)\ Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" Condition = "false"

msbuildツールを設定
C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe to jenkins global configuration manager

ジェンキンスでは、Windowsコマンドバッチを実行します
nugetsの再取得: "C:\ Program Files(x86)\ Jenkins\tools\nuget\NuGet.exe" restore "C:\ Program Files(x86)\ Jenkins\workspace\theapp_build\theapp.sln"

ジェンキンスでは、Windowsコマンドバッチを実行します
MSBuildビルドファイル:theapp.sln
コマンドライン引数:/ nologo/t:restore/t:rebuild/p:Configuration = "Debug" /p:VisualStudioVersion=15.0

3
Viorel Banesaru