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

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

想法吗?


当前回答

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

其他回答

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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