1

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

ビルドサーバーにWebDeploymentProjectアドインをインストールし、開発ボックスのC:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplicationsディレクトリをC:\ProgramFilesにコピーしました。ビルドサーバー上の\MSBuild\ Microsoft \ VisualStudio \v10.0\ディレクトリ。注:私の開発ボックスは64ビットで、ビルドサーバーは32ビットです。

ビルドサーバーと開発マシンでこれが異なる動作をする理由がわかりません。誰かアイデアはありますか?

ありがとう、スティーブ

4

1 に答える 1

3

MSBuild 4ビルドプロセス中には使用されません(インストールされていないか、TeamCityがMSBuild 3.5にリンクされていません)。

MSBuild 4それがビルドサーバーで使用されているバージョンであることを確認する必要があります。

説明(情報)

Web Deployment Project 2010MSBuild 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>

プロパティ関数SourceWebProjectIndexSourceWebProjectPathuseプロパティ関数は、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)". 
于 2010-05-26T07:16:42.767 に答える