外部VS2013生成错误“错误MSB4019:导入的项目<path>未find”

我正在通过命令行构build一个项目,而不是在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)文件夹拉长,显然不存在了。 path应该是v12.0。

 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\ 

我尝试在我的系统环境variables表中指定VSToolsPath,但外部构build实用程序仍然使用v11.0。 我试图通过registry,什么都没有。

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

思考?

我有同样的问题,并find一个更简单的解决scheme

这是由于Vs2012在csproj文件中join了这个部分:

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

您可以安全地删除该部分,您的解决scheme将build立。

正如Sielu指出的那样,您必须确保.proj文件以<Project ToolsVersion="12"开头,否则下一次使用visual studio 2010打开该项目时,它将再次添加已删除的节点。

否则,如果您需要使用webdeploy或者使用构build服务器,则上述解决scheme将无法工作,但您可以在构build脚本中指定VisualStudioVersion属性:

 msbuild myproject.csproj /p:VisualStudioVersion=12.0 

或编辑您的构build定义:

编辑构建定义来指定<code> VisualStudioVersion </ code>属性

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

这很容易做到。 打开你的构build定义,并进入“ 进程 ”页面。 然后在“ 3.高级 ”组下面有一个名为“ MSBuild Arguments ”的属性。 使用以下语法放置参数

 /p:VisualStudioVersion=12.0 

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

这是密切相关的,但可能会或可能不会解决OP的具体问题。 在我的情况下,我试图使用VS2013自动部署Azure站点。 通过VS构build和部署工作,然而,使用MSBuild显示了“目标”周围类似的错误。 原来,MSBuild在VS2013下有所不同,现在是VS的一部分,而不是.Net Framework(参见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(没有完全testing,但发现 – 他们已经移动了一些东西)

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

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

基本上,我需要在bulding之前调用以下内容。 我猜想Visual Studio 2013不会自动注册环境,但2012年,或者我忘记了。

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

希望这篇文章可以帮助别人。

giammin的解决scheme是部分不正确的。 您不应该从您的解决scheme中删除整个PropertyGroup。 如果你这样做, MSBuild的“DeployTarget = Package”function将停止工作。 此function依赖于设置“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)' != ''" /> 

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

许多path是参照VS版本构build的。

由于各种原因,我们的构build以系统权限运行,环境variables“VisualStudioVersion”仅在“用户”级别设置(由VS 2013安装程序) – 这是公平的。

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

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

如果将Visual Studio 2012迁移到2013,则使用edior打开* .csprorj项目文件。
并检查“Project”标签的ToolsVersion元素。

这是4.0的价值
你做到12.0

  •  <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" 
  •  <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" 

或者,如果您使用msbuild构build,那么只需指定VisualStudioVersion属性即可

msbuild /p:VisualStudioVersion=12.0

我正在使用外部构build实用程序。 想想像ant这样的东西,如果我正确地理解产品,只是一个商业版本。 我必须联系制造商的答案。

事实certificate,该项目中有一个全球macros,DEVSTUDIO_NET_DIR。 我不得不在那里改变.Net的path。 他们把各种视觉演播室版本列为“行动”,通过我,但所有的道路都可以在幕后回到那个全球variables。 如果我有自己的方法,我会把它列为对产品的缺陷,除非我在我的理解中错过了某些东西。 纠正那里的path,解决了构build问题。

我安装了Visual Studio 2013。 这对我工作:

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

所以我把条件从==改成了!= ,从10.0改成了12.0

我有类似的问题。 所有提出的解决scheme只是解决这个问题,但不解决错误的根源。 @giammin解决scheme不应该应用,如果你正在使用tfs构build服务器,因为它只是崩溃的发布function。 @ cat5dev解决scheme – 解决问题,但不解决它的来源。

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

应该使用VS2013 ReleaseTfvcTemplate.12.xaml ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml $(VisualStudioVersion)设置为12.0的生成过程模板

这工作没有任何项目文件的变化。

我也有同样的错误..我这样做来解决它

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

改成

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

它完成了。

在我的情况下,开发环境是VS2013,我正在使用TFS 2010. Build是针对.NET 4.5.1的。 我正在为CI设置自动构build。 每当我尝试上面提到的解决方法 – 如完全删除属性组或更换一些行等。我build立用于发生在TFS,但我发布到azure色用于失败,'MSDeploy'或有时不同的错误。 我无法同时实现两者。

所以最后我必须通过MSBuild的论点来解决这个问题。

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

它为我工作。

您应该将文件夹Web应用程序从C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \复制到C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \

你会find

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

在出现此错误的csproj文件中。 只要从csproj中删除这个,然后build立。

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

我 – 没有什么帮助将VisualStudioVersionvariables的v11.0值更改为v10.0。 更改.csproj文件中的variables没有。 通过命令promt设置它没有。 等等…

结束了复制我的本地文件夹的特定版本(v11.0)到我的生成服务器。

我已经尝试了所有上述解决scheme,仍然没有运气。 我曾听过有人在他们的构build服务器上安装Visual Studio来修复它,但是我只有5GB的空闲空间,所以我只是将C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio复制到我的构build服务器, 。 之后开始工作,使用team team 9.x和visual studio 2013。

基于TFS 2015 Build Server

如果您反对此错误... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.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. ... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.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.

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

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

当我安装一些VS组件时,我得到了这个错误。 不幸的是,这些答案都没有帮助我。 我使用TFS进行命令开发,我没有权限编辑构build定义。 我通过删除名为VS110COMNTOOLSVS120COMNTOOLS环境variables来解决这个问题。 我认为它是与我的VS组件一起安装的。

在我的情况下,我只是打开.csproj文件评论下线,并做了伎俩

<!-- <Import Project="..\PRPJECTNAME.targets" /> -->

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

我从我的解决scheme中select了一个Web项目,并尝试将其作为一个独立的项目打开,之后就可以解决问题。

我发现我错过了我的本地PC上的WebApplications文件夹,没有像使用2012时那样安装Visual Studio 2017。