Цель MSBuild не работает на сервере, но успешно выполняется локально

Для нашего веб-проекта мне требуется сборочная версия проекта для версии нашего статического содержимого.

Я объявил цель в файле веб-проекта, чтобы получить идентификатор сборки и получить из нее номер версии, например:

<PropertyGroup>
    <IvanhoWebVersion>
    </IvanhoWebVersion>
  </PropertyGroup>
  <Target Name="SetIvanhoWebVersion" AfterTargets="AfterBuild">
    <Message Text="-----------------">
    </Message>
    <Message Text="Entering target SetIvanhoWebVersion">
    </Message>
    <Message Text="-----------------">
    </Message>
    <GetAssemblyIdentity AssemblyFiles="$(OutputPath)$(AssemblyName).dll">
      <Output TaskParameter="Assemblies" ItemName="AssemblyIdentities" />
    </GetAssemblyIdentity>
    <CreateProperty value="%(AssemblyIdentities.Version)">
      <Output TaskParameter="Value" PropertyName="IvanhoWebVersion" />
    </CreateProperty>
    <Message Text="Assembly version = v$(IvanhoWebVersion)">
    </Message>
    <Exec Command=" &quot;$(SolutionDir)Ivanho.Lib\TranslationGenerator\TranslationGenerator.exe&quot; &quot;$(ProjectDir)Areas\UI\Static\locales\translationsrc\Translations-EN-NL-AR.xlsx&quot; &quot;$(ProjectDir)Areas\UI\Static\locales\v.$(IvanhoWebVersion)&quot;" />
  </Target>

Это работает как шарм при локальной сборке, однако при попытке зарегистрировать это на нашем сервере сборки TFS происходит сбой со следующей ошибкой:

Не удается получить имя сборки для "bin\Ivanho.Web.dll". Не удалось загрузить файл или сборку Ivanho.Web.dll или одну из ее зависимостей. Система не может найти указанный путь.

Эта ошибка возникает в той же строке вызова GetAssemblyIdentity.

Я не могу понять, почему это не работает на сервере сборки, я новичок в MSBuild, может кто-нибудь указать мне правильное направление? Спасибо заранее!


person thomaux    schedule 03.05.2013    source источник


Ответы (1)


Либо файла нет, либо путь к нему неверный. Посмотрите на сервере сборки, чтобы увидеть, есть ли там файл. Вы можете использовать задачу converttoabsolutepath, чтобы быть уверенными в путях, см.:http://msdn.microsoft.com/en-us/library/bb882668(v=vs.100).aspx. Вы можете указать оператор ошибки, чтобы проверить файл, например.

<Error Condition="!Exists('$(OutputPath)$(AssemblyName).dll')" Text="FileNotFound"/>
person James Woolfenden    schedule 03.05.2013