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) >= 4)">
$(_SourceWebProjectPath.SubString(0,4))
</_SourceWebProjectPathBeginWith>
</PropertyGroup>
Свойство SourceWebProjectIndex
и SourceWebProjectPath
используют функции свойств, в 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)".