我通过命令行构建一个项目,而不是在Visual Studio 2013中。注意,我已经将我的项目从Visual Studio 2012升级到2013。项目在IDE中构建得很好。此外,我完全卸载VS2012,重新启动,并安装VS2013。我唯一拥有的Visual Studio版本是2013终极版。

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。我试着在登记处搜索,但一无所获。

遗憾的是,我没有看到任何简单的方法来使用确切的命令行。我使用一个构建工具。

想法吗?


当前回答

在我的情况下,我只是通过打开.csproj文件在行下面注释,并做到了这一点

。< !——<导入项目="..\PRPJECTNAME. "目标" />—>

我的问题可能不同,但我被拖到这里,但这可能会帮助到某人。

我从我的解决方案中选择了一个单一的网络项目,并试图将其作为一个独立的项目来打开,这是一个问题,在以上heck我能够解决问题。

其他回答

我也有这个问题,你可以通过在构建定义中设置工具版本来修复它。

这很容易做到。打开构建定义并转到“Process”页面。然后在“3”下面。高级”组中有一个名为“MSBuild Arguments”的属性。按照以下语法放置参数

/p:VisualStudioVersion=12.0 

如果有更多参数,请用空格分隔,而不是逗号。

如果将Visual Studio 2012迁移到2013,则打开*。Csprorj项目文件编辑器。 并检查'Project'标签的ToolsVersion元素。

值为4.0 你坚持到12点0分

从 <?XML版本="1.0"编码="utf-8"?> <项目ToolsVersion = " 4.0 " 来 <?XML版本="1.0"编码="utf-8"?> <项目ToolsVersion = " 12.0 "

或者如果你用msbuild构建,那么只需指定VisualStudioVersion属性

msbuild / p: VisualStudioVersion = 12.0

使用正确的MSBuild版本。设置“环境变量”为:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

这也适用于VS 2019项目

之前我们将其设置为C:\Windows\Microsoft.NET\Framework\v4.0.30319

在我的情况下,我只是通过打开.csproj文件在行下面注释,并做到了这一点

。< !——<导入项目="..\PRPJECTNAME. "目标" />—>

我的问题可能不同,但我被拖到这里,但这可能会帮助到某人。

我从我的解决方案中选择了一个单一的网络项目,并试图将其作为一个独立的项目来打开,这是一个问题,在以上heck我能够解决问题。

我也犯了同样的错误。我这么做是为了弥补

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />

改变

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

做完了。