Visual Studio 2013ではなく、コマンドラインでプロジェクトを構築しています。なお、プロジェクトはVisual Studio 2012から2013にアップグレードしています。プロジェクトはIDE内で問題なくビルドされます。また、最初にVS2012を完全にアンインストールし、再起動してからVS2013をインストールしました。私が持っているVisual Studioのバージョンは2013 Ultimateだけです。
ValidateProjects:
39>path_to_project.csproj(245,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 <Import> declaration is correct, and that the file exists on disk.
39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.
以下、問題の2行です。
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
元々の2行目はv10.0でしたが、手動でv12.0に変更しました。
$(VSToolsPath)はv11.0(VS2012)のフォルダまで伸びていますが、明らかにもうそこにはありません。v12.0へのパスになっているはずです。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\
システム環境変数のテーブルにVSToolsPathを指定してみましたが、外部のビルドユーティリティはまだv11.0を使用しています。レジストリを検索してみましたが、何も出てきませんでした。
残念ながら、使用された正確なコマンドラインを取得する簡単な方法はありません。私はビルドツールを使用しています。
どうでしょうか?
私も同じ問題を抱えていましたが、もっと簡単な解決策を見つけました。
これは、Vs2012がcsprojファイルに以下を追加したことが原因です。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolspath>
</PropertyGroup>
この部分を削除すれば、ソリューションは安全に構築できます。
また、Sieluさんのご指摘のように、.projファイルの先頭が <Project ToolsVersion="12"
であることを確認する必要があります。
で始まるようにしてください。そうしないと、次回Visual Studio 2010でプロジェクトを開いたときに
そうしないと、次回Visual Studio 2010でプロジェクトを開いたときに、削除されたノードが再び追加されてしまいます。
その他、webdeployを使用する必要がある場合や、ビルドサーバーを使用している場合は、上記の解決策ではうまくいきませんが、ビルドスクリプトに「VisualStudioVersion」プロパティを指定することができます。
msbuild myproject.csproj /p:VisualStudioVersion=12.0
または、ビルド定義を編集してください。
![ビルド定義を編集して、VisualStudioVersion
プロパティを指定する][2]。
先ほど、Kinookさんからリンクのお返事をいただきました。
基本的には、buldingの前に以下を呼び出す必要がありますね。Visual Studio 2013では最初に自動的に環境を登録しないようですが、2012では登録されていたのか、あるいは登録したのに忘れていたのか。
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
願わくば、この投稿が誰かの助けになればと思います。
私は外部のビルドユーティリティを使用していました。製品を正しく理解していれば、Antsのようなものだと思いますが、ただ製品版です。メーカーに問い合わせてみましたが、回答は得られませんでした。
その結果、プロジェクトにDEVSTUDIO_NET_DIRというグローバルマクロがあることがわかりました。そこで.Netへのパスを変更する必要がありました。ビジュアルスタジオの様々なバージョンがアクションとしてリストアップされており、私はそれに惑わされましたが、すべての道は舞台裏にある1つのグローバル変数につながっているのです。私の理解が間違っていなければ、これを製品の欠陥として挙げたいと思います。このパスを修正したところ、ビルドの問題は解決しました。