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
の下にある)へのシンボリックリンクを生成することです。
どうも
「Web開発ビルドツール」のワークロードが不足しているように見えます: Microsoft.VisualStudio.Workload.WebBuildTools
。
here (VS2017)または here (VS2019)からビルドツールインストーラーをダウンロードして実行することでインストールできます
vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
または、vs_buildtools.exe
を開いて、GUIで「Web開発ビルドツール」コンポーネントを選択します。
上記の受け入れられた答えは、少なくとも私にとって技術的に正しいだけで不完全で、少し混乱を招き、Visual Build Professionalを機能させるために1つの追加ステップが必要でした。
vs_buildtools.exeは技術的には存在しません。 create そのファイルがどこにあるかを尋ねる質問をしなければなりませんでした。 vs_buildtools.exeがvs_buildtools _ *******。exeであり、実際のインストールプログラムであることは明らかではありませんでした。さらに、上記の「-add ***」は単なる省略形です。 GUIに移動して、両方のワークフロータスクを確認できます。それは同じことをします。 vs_buildtoolsファイルは必要ではありませんが、持っていました。
VSB Proはまだプロジェクトをビルドしませんでした。上記と同じエラーがスローされました。秘密のソースは、単純にC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0
のWebApplications
folderをC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0
にコピーすることでした。その後、プロジェクトを再構築しましたが、すべて順調でした。 WebApplication.targetsファイルを予想される場所に配置しました。
マイクロソフトができなかった理由は私を超えています。また、なぜ別のインストール。 VS17は膨大な量のものをインストールします。ビルドツールは、いつものように暗示されています。なんでも。
うまくいけば他の人に役立つように、私はこの答えを投稿しています。私はわなに陥り、プロジェクトが構築されていないため、かなりの時間を失いました。この答えが物事を少し明確にすることを願っています。
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.0
をv$(VisualStudioVersion)
に置き換えた後、プロジェクトをロードできました。
また、上記のリンクのソリューションが示すように、VisualStudioVersion
タグのv14.0
をv10.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"セクションのコメントに直接リンクすることはできません。)
chocolatey を使用すると、WebBuildTools
オプションがすでに含まれている2017ビルドツールを簡単にインストールできます。 installed itになったら、管理コマンドプロンプトに次のように入力します。
choco install visualstudio2017buildtools -y
VS 2019の場合も同様です:
choco install visualstudio2019buildtools -y
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
必ず昇格された権限で実行してください
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