我通过命令行构建一个项目,而不是在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。我试着在登记处搜索,但一无所获。

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

想法吗?


当前回答

基于TFS 2015 Build Server

如果你纠正这个错误……错误MSB4019:导入项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft. webapplication . exe”没有找到“Targets”。确认<Import>声明中的路径是正确的,并且该文件存在于磁盘上。

打开错误消息中指定的项目的.csproj文件,并注释掉下面的部分

< !<属性tygroup > -> < !“$”“>10.0</ visual studios > ->” < !<VSToolsPath Condition=“$(VSToolsPath)”=“>$”(msbuildextensionspath spath)\微软\视觉工作室\v$)</VSToolsPath> < !</属性tygroup > ->

其他回答

在我的案例中,开发环境是VS2013,我使用的是TFS 2010。Build的目标是。net 4.5.1。我在为CI设置自动生成。每当我尝试上面提到的解决方案-像完全删除属性组或替换一些行等。我的构建曾经发生在TFS,但我的发布到azure曾经失败与“MSDeploy”或有时一些不同的错误。 我无法同时做到这两点。

所以最后我不得不通过MSBuild参数来解决这个问题。

3.去编辑构建定义>进程>高级> MSBuild参数(设置为)/p:VisualStudioVersion=12.0

这对我很管用。

我发现我在本地PC上缺少WebApplications文件夹,没有像我使用2012年那样安装Visual Studio 2017。

你会发现

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

在出现此错误的csproj文件中。 只需从csproj中删除这个,然后构建。

当我安装一些VS组件时,我得到了这个错误。不幸的是,这些答案都没有帮到我。我使用TFS进行命令开发,没有编辑构建定义的权限。我通过删除VS110COMNTOOLS和VS120COMNTOOLS环境变量来解决这个问题。我想它是和我的VS组件一起安装的。

我安装了Visual Studio 2013。这招对我很管用:

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

因此,我将条件从==更改为!=,并将值从10.0更改为12.0。