我们最近升级了VS 2010和.NET 4的应用VS 2012和.NET 4.5。 我们有一个构建脚本来部署在测试服务器上的应用程序。 我们有两个箱子 - 一个是Windows 8中使用VS 2012(全新安装)等是Windows 7中使用VS 2010和VS 2012(新安装)。
从Windows 8盒构建脚本运行构建脚本运作良好,应用程序部署到测试服务器。 但是,从Windows 7盒部署应用程序时,我得到了以下错误:
“C:\ Achinth \构建\工作\构建\ qa1sb.proj”(DeployAll目标)(1) - > “C:\ Achinth \构建\工作\ APP \ App.csproj”(ResolveReferences; MsDeployPublish目标)(2) - >(MSDeployPublish目标) - > C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\ Microsoft.Web.Publishing.targets(3847,5):错误:Web部署任务失败(。 (2012年8月19日下午6点23分41秒)时,请求在远程计算机上进行处理时发生错误)[C:\ Achinth \构建\工作\ APP \ App.csproj]。C:\程序文件(x86 )\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\ Microsoft.Web.Publishing.targets(3847,5):错误:\ r [C:\ Achinth \建立\工作\软件\ App.csproj] C:\程序文件(x86)\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\ Microsoft.Web.Publishing.targets(3847,5):错误:(2012年8月19日下午6时23分41秒)时出错该请求是在远程计算机上处理\ r [C:\ Achinth \建立\工作\软件\ App.csproj] C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\微软。 Web.Publishing.targets(3847,5):错误:应用程序池ŧ 你要使用的帽子有“managedRuntimeVersion”属性设置为“V4.0”。 此应用程序需要“V4.5”。 [C:\ Achinth \建立\工作\软件\ App.csproj]
看着它看起来像的MSBuild错误使用VS 2010年的目标,而不是VS 2012,这是造成错误。 由于Windows 8框没有VS 2010是正确使用VS 2012吨的目标。
可有一个人请提供关于如何使MSBuild的选择是正确的版本的指针?
在这种情况下,你需要指定的MSBuild属性VisualStudioVersion = 11.0。 我的博客上讲述这个在http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx ,我已经粘贴下面它也为您提供方便。
其中一个的Visual Studio 2012的最需要的功能是在两个VS 2012和VS 2010中打开项目的能力(需要VS 2010 SP1)。 如果你还没有听说过,我们没有实现该功能。 你可能会问,我们如何能够做到这一点,这可能会如何影响你。
如果打开的.csproj / .vbproj在VS2010中创建一个Web项目,你会看到下面的import语句。
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
v10.0\WebApplications\Microsoft.WebApplication.targets" />
当您打开VS该项目2012有你的项目文件做了一些改动,以确保它可以同时在VS 2010 SP1中打开和VS 2012年一对项目所做的更改,当它在2012 VS第一次加载是添加如下,以取代import语句。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
我们删除了硬编码10.0,而是使用的属性VisualStudioVersion。 在Visual Studio 2012建立在该值将永远是11.0,而2010年VS它不存在。 这就是为什么我们把它默认为10.0以上。 有一些场景中通过命令行建立需要明确设置该属性。 我们到那里之前,让我解释一下这个属性被设置方式(按照这个顺序)
- 如果VisualStudioVersion被定义为环境变量/全球的MSBuild属性,即使用。
- 基于.sln文件的文件格式版本(使用工具集是SLN文件格式-1)
- 为了简化这一说法,.sln文件将建立与指定VisualStudioVersion于VS的这创造.sln文件的版本值。
- 选择默认
- 10.0如果VS 2010安装
- 安装最高版本的子版本的工具集
#2,当你正在建设一个.sln文件VisualStudioVersion的价值将在.sln文件中找到的格式版本-1。 这里要注意的重要一点是,如果你建立一个.sln文件,将建立与VisualStudioVersion对应VS的这创造.sln文件的版本值。 所以,如果你在创建一个VS2012 .sln文件,你总是会建立一条.sln文件的价值VisualStudioVersion将是11.0。 在许多情况下,如果你建立.sln文件你都不错。
如果您正在构建的.csproj / .vbproj文件W / O通过.sln文件去? 如果你建立在命令行(而不是开发者的提示)的Web项目,然后用于VisualStudioVersion值将为10.0。 那是我上述显示特性的伪影。 在这种情况下,你应该通过这个作为一个MSBuild属性。 例如
msbuild.exe MyAwesomeWeb.csproj /p:VisualStudioVersion=11.0
在这种情况下,我传递的财产作了明确规定。 这将始终覆盖任何其他机制来确定VisualStudioVersion值。 如果您使用的是一个构建脚本的MSBuild任务,那么你可以指定在属性属性或属性AdditionalProperties的财产。 查看属性和AdditionalProperties之间的差异我以前的博客文章。
如果你构建/发布时遇到任何可笑的行为和您发现了错误.targets文件被导入,那么你可能需要指定此属性。
从这个链接 。
“打开你的*的.csproj或* .vbproj web项目文件在文本编辑器,并添加以下行。
<IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>
我增加了行只是前行
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
并将其部署没有错误“。
它为我工作。
我发现,当我使用VS2012发布Web部署软件包的功能,它会生成一个.zip文件。 内部的拉链有一个名为archive.xml包含与属性“managedRuntimeVersion =‘V4.0’”一个createApp标签文件。 当我使用msdeploy.exe将其同步到IIS实例,它的工作原理。
然而,当我使用msbuild.exe来创建Web包.zip文件,它包含有“managedRuntimeVersion =‘V4.5’”的archive.xml。 尝试部署使用的ERROR_APPPOOL_VERSION_MISMATCH错误msdeploy.exe结果这个网络包IIS。
正如赛义德·易卜拉欣·哈希米解释这里,加入“/p:VisualStudioVersion=11.0”我msbuild.exe命令行有效势力managedRuntimeVersion =‘V4.0’'中所产生的网络包的archive.xml所以它解决了问题。
对于任何人谁找到了这个网页搜索为什么msdeploy / webdeploy显示了类似的错误,我发现这是解决方案。
要解决这个问题,只需添加DeployManagedRuntimeVersion财产到您的VS-项目:
<targetframeworkversion>v4.5</TargetFrameworkVersion></code>
<DeployManagedRuntimeVersion>v4.0</DeployManagedRuntimeVersion>
从这里: http://techblog.dorogin.com/2013/11/deploying-45-projects-with-webdeploy.html
在我的情况WebDeploy没有安装在构建服务器。 因此,它扔了一个类似的错误。 我安装WebDeploy,我是金色的。
http://www.microsoft.com/en-ca/download/confirmation.aspx?id=25230