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

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

想法吗?


我刚收到Kinook的回复,他给了我一个链接:

基本上,我需要在构建之前调用以下命令。我猜Visual Studio 2013不会先自动注册环境,但2012做到了,或者我做到了,然后忘记了。

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

希望这篇文章能帮助到其他人。


我遇到了同样的问题,找到了一个更简单的解决方案

这是由于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,它将再次添加删除的节点。

否则,如果你需要使用webdeploy或者你使用构建服务器,上面的解决方案将不起作用,但你可以在你的构建脚本中指定VisualStudioVersion属性:

msbuild myproject.csproj /p:VisualStudioVersion=12.0

或者编辑你的构建定义:


我正在使用一个外部构建实用程序。想想像Ants这样的产品,如果我没有理解错的话,它只是一个商业版本。我不得不联系制造商得到答案。

事实证明,项目中有一个全局宏DEVSTUDIO_NET_DIR。我不得不把路径改为。net。他们列出了各种视觉工作室版本的“动作”,这让我很失望,但所有的道路都指向幕后的一个全局变量。如果我有自己的方式,我会把它列为产品的缺陷,除非我在理解中遗漏了一些东西。修正路径在那里修复了构建问题。


在命令行中运行这个命令也可以解决这个问题。 SETX VisualStudioVersion“12.0”


我有这个问题,我们的FSharp目标(FSharpTargetsPath是空的)。

许多路径是参照VS版本构建的。

由于各种原因,我们的构建运行有系统特权,环境变量“VisualStudioVersion”只被设置在“用户”级别(由VS 2013安装程序设置)——这是足够公平的。

确保在您正在运行的级别(系统或用户)上将“VisualStudioVersion”环境变量设置为“12.0”。


你会发现

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

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


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

这很容易做到。打开构建定义并转到“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


Giammin的解决方案部分是不正确的。您不应该从解决方案中删除整个PropertyGroup。如果你这样做,MSBuild的“DeployTarget=Package”特性将停止工作。这个特性依赖于“VSToolsPath”的设置。

<PropertyGroup>
  <!-- VisualStudioVersion is incompatible with later versions of Visual Studio.  Removing. -->
  <!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
  <!-- VSToolsPath is required by MSBuild for features like "DeployTarget=Package" -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

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

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

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


要解决这个问题,只需要做一件事:将TeamCity升级到8.1版本。因为对Visual Studio 2012/2013和MSBuild Tools 2013的支持只在TeamCity 8.1中引入。一旦你升级了你的TeamCity,在你的构建步骤中相应地修改MSBuild Tools版本设置,问题就会消失。更多信息请阅读这里:http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html


我-没有什么能帮助将VisualStudioVersion变量的v11.0值更改为v10.0。在.csproj文件中改变变量没有。通过命令提示符设置却没有。等等……

最终将特定版本(v11.0)的本地文件夹复制到构建服务器。


我也有类似的问题。所有提出的解决方案都只是围绕这个问题工作,但并没有解决错误的根源。@giammin解决方案不应该应用,如果你正在使用TFS构建服务器,因为它只是崩溃的发布功能。@cat5dev解决方案-解决问题,但不解决它的来源。

我几乎可以肯定你正在使用VS2012的构建过程模板 ReleaseDefaultTemplate.11.1。或DefaultTemplate.11.1.xaml 这些构建模板已经为VS2012和$(VisualStudioVersion)设置为11.0

你应该使用VS2013的构建过程模板 ReleaseTfvcTemplate.12。xaml或TfvcTemplate.12。其中$(VisualStudioVersion)设置为12.0

这在项目文件中没有任何变化。


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

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

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

这对我很管用。


你应该复制WebApplications文件夹 从C:\Program Files (x86)\MSBuild\Microsoft\ VisualStudio\v12.0\ 到C:\Program Files (x86)\MSBuild\Microsoft\ VisualStudio\v11.0\


这是密切相关的,但不一定能解决OPs特定的问题。在我的案例中,我试图使用VS2013自动化Azure站点的部署。然而,通过VS works构建和部署,使用MSBuild在“目标”周围显示了类似的错误。原来MSBuild在VS2013下是不同的,现在是VS的一部分,而不是。net框架(参见http://timrayburn.net/blog/visual-studio-2013-and-msbuild/)。基本上,使用正确的MSBuild版本:

老,VS2012

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

新的,VS2013

C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe

更新、VS2015

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

更新,VS2017(没有完全测试,但发现-他们移动了一些东西)

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe

我尝试了以上所有的解决方案,仍然没有运气。我听说有人在他们的构建服务器上安装visual studio来解决这个问题,但是我只有5gb的空闲空间,所以我只是把C:\Program Files (x86)\MSBuild\Microsoft\ VisualStudio复制到我的构建服务器上,然后就结束了。之后开始工作,使用城市9队。X和visual studio 2013。


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

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

改变

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

做完了。


基于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 > ->


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


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

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

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

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


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


在我的情况下,我使用了错误版本的MSBuild.exe。

您需要使用的版本取决于您用于创建项目的Visual Studio的版本。在我的情况下,我需要14.0(使用Visual Studio 2015)。

这是在:

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

你可以浏览以下网页:

C:\Program Files (x86)\MSBuild

寻找其他版本。


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

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

这也适用于VS 2019项目

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