【问题标题】:Web Deployment Projects for VS2010 on build server failing with Error MSB4086构建服务器上 VS2010 的 Web 部署项目失败并出现错误 MSB4086
【发布时间】:2010-05-25 19:43:04
【问题描述】:

当我将我的 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 位的。

我无法弄清楚为什么在构建服务器上的行为与在我的开发机器上的行为不同。有人有什么想法吗?

谢谢, 史蒂夫

【问题讨论】:

  • 您是在 2010 年重新创建构建任务还是使用 2008 年 WDP 中的相同任务?
  • 我用的是同一个。我只是在安装 WDP2010 后让 VS2010 升级 WDProject。我应该重新创建构建任务吗?这究竟意味着什么?
  • 你的 TeamCity autobuild + 2010 WebDeploymentProject 工作了吗?我们也遇到了问题:我们的问题反映了这篇帖子blogs.msdn.com/b/webdevtools/archive/2010/05/26/… 中的 Asbjørn Ulsberg 的问题。我将不胜感激。

标签: asp.net msbuild web-deployment-project


【解决方案1】:

MSBuild 4 在您的构建过程中未使用(未安装和/或 TeamCity 链接到 MSBuild 3.5)。

您必须确保 MSBuild 4 是您构建服务器上使用的版本。

说明(供参考)

Web Deployment Project 2010 使用MSBuild 4 的新功能,如Property function。如果使用以前版本的 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>

SourceWebProjectIndexSourceWebProjectPath 属性使用属性函数,在 MSBuild 3.5 中它们不会被评估,因此SourceWebProjectPathBeginWith 上的条件也无法被评估,从而导致错误:

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)". 

【讨论】:

  • 非常感谢。我还有其他问题,但您的帮助解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 2014-10-07
  • 2023-04-03
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多