Asp.net 生成服务器上VS2010的Web部署项目失败,错误为MSB4086

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

当我将我的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 "$(_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) &gt;= 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)".