Asp.net 生成服务器上VS2010的Web部署项目失败,错误为MSB4086
当我将我的Web部署项目从VS2008升级到VS2010测试版时,我能够在我的开发箱上本地执行构建。但是,当我尝试在TeamCity构建服务器上执行构建时,我开始出现以下异常:Asp.net 生成服务器上VS2010的Web部署项目失败,错误为MSB4086,asp.net,msbuild,web-deployment-project,Asp.net,Msbuild,Web Deployment Project,当我将我的Web部署项目从VS2008升级到VS2010测试版时,我能够在我的开发箱上本地执行构建。但是,当我尝试在TeamCity构建服务器上执行构建时,我开始出现以下异常: C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(162, 37): error MSB4086: A numeric comparison was attempted on "$(_Source
C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(162, 37):
error MSB4086: A numeric comparison was attempted on "$(_SourceWebProjectPath.Length)"
that evaluates to "" instead of a number, in condition "'$(_SourceWebProjectPath)' != ''
And $(_SourceWebProjectPath.Length) >= 4)".
我确实在生成服务器上安装了Web部署项目加载项,并将开发框上的C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications目录复制到生成服务器上的C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\目录。注意:我的开发框是64位,构建服务器是32位
我不明白为什么构建服务器上的行为与我的开发机器上的不同。有人有什么想法吗
谢谢,
在生成过程中未使用Steve
MSBuild 4
(未安装它和/或TeamCity链接到MSBuild 3.5)
您必须确保MSBuild 4
是生成服务器上使用的版本
解释(供参考)
WebDeploymentProject2010
像属性函数一样使用MSBuild 4
的新功能。如果使用了MSBuild的早期版本,则不会计算属性函数,并且会发生错误
如果查看文件Microsoft.WebDeployment.targets
,您应该会看到以下声明:
<PropertyGroup Condition="'$(SourceWebProject)' != ''">
<_SourceWebProjectIndex>
$([MSBuild]::Add(1, $(SourceWebProject.LastIndexof('|'))))
</_SourceWebProjectIndex>
<_SourceWebProjectPath>
$(SourceWebProject.SubString($(_SourceWebProjectIndex)))
</_SourceWebProjectPath>
<_SourceWebProjectPathBeginWith Condition="'$(_SourceWebProjectPath)' != '' And ($(_SourceWebProjectPath.Length) >= 4)">
$(_SourceWebProjectPath.SubString(0,4))
</_SourceWebProjectPathBeginWith>
</PropertyGroup>
您是在2010年重新创建了构建任务,还是使用了与2008 WDP相同的任务?我使用的是相同的任务。在安装WDP2010之后,我只是让VS2010升级WDP项目。我应该重新创建构建任务吗?这到底意味着什么?你让TeamCity autobuild+2010 WebDeploymentProject开始工作了吗?我们也遇到了问题:我们的问题在这篇文章的评论中反映了阿斯比约恩·阿尔斯伯格的问题。谢谢你的帮助,非常感谢。我还有其他问题,但你的帮助解决了这个问题。
C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(162, 37):
error MSB4086: A numeric comparison was attempted on "$(_SourceWebProjectPath.Length)"
that evaluates to "" instead of a number, in condition "'$(_SourceWebProjectPath)' != ''
And $(_SourceWebProjectPath.Length) >= 4)".