我正在通过命令行而不是在 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.
这是有问题的两行:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
原来的第二行是 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 打开项目时,它将再次添加已删除的节点。
<Project ToolsVersion="12"
否则,如果您需要使用 webdeploy 或使用构建服务器,上述解决方案将不起作用,但您可以VisualStudioVersion在构建脚本中指定属性:
VisualStudioVersion
msbuild myproject.csproj /p:VisualStudioVersion=12.0
或编辑您的构建定义: