外部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定义:
我也有这个,你可以通过在你的构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定义。 我通过删除名为VS110COMNTOOLS
和VS120COMNTOOLS
环境variables来解决这个问题。 我认为它是与我的VS组件一起安装的。
在我的情况下,我只是打开.csproj文件评论下线,并做了伎俩
。 <!-- <Import Project="..\PRPJECTNAME.targets" /> -->
我的问题可能会有所不同,但我被拖到这里,但这可能有助于某人。
我从我的解决scheme中select了一个Web项目,并尝试将其作为一个独立的项目打开,之后就可以解决问题。
我发现我错过了我的本地PC上的WebApplications文件夹,没有像使用2012时那样安装Visual Studio 2017。