Ошибка MSBuild MSB3021: Невозможно скопировать файл. Не удалось найти файл 'obj \ Release \ myWebProject1.dll'

При использовании TeamCity для компиляции моего сценария задачи MSBuild XML происходит сбой:

[10:43:03]: myWebProject1\ myWebProject 1 .csproj (3s)
[10:43:07]: [ myWebProject1\ myWebProject1 .csproj] _CopyWebApplicationLegacy
[10:43:07]: [_CopyWebApplicationLegacy] Copy
[10:43:07]: [Copy] C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(131, 5): error MSB3021: Unable to copy file "obj\Release\myWebProject1.dll" to "C:\MSBUILDRELEASE\myWebProject1\\bin\myWebProject1.dll". Could not find file 'obj\Release\myWebProject1.dll'.

Когда я запускаю его локально, он работает.

Когда я сравниваю свой локальный вывод с выводом сервера сборки, на моем сервере сборки отсутствуют файлы. Как и файл global.asax, которого нет в моем выходном каталоге сервера сборки (но не тогда, когда я компилирую его локально). Почему?

Вот мой текущий сценарий MSBuildScript:

<?xml version="1.0" encoding="utf-8"?>
<Project
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="4.0"
  DefaultTargets="Build">

  <PropertyGroup>
    <OutputDir>C:\MSBUILDRELEASE</OutputDir>
  </PropertyGroup>

  <ItemGroup>
    <ProjectToBuild Include="UtilityApp.sln" >
      <Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
    </ProjectToBuild>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(ProjectToBuild)"/>
            <CallTarget Targets="Publish WebProject1" />
            <CallTarget Targets="Publish WebProject2" />  
  </Target>

<Target Name="Publish WebProject1">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject1\WebProject1.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)\WebProject1\;
      OutDir=$(OutputDir)\WebProject1\;Configuration=Release;Platform=AnyCPU" />
</Target>

<Target Name="Publish WebProject2">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject2\WebProject2.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)\WebProject2\;
      OutDir=$(OutputDir)\WebProject2\;Configuration=Release;Platform=AnyCPU" />
</Target>

</Project>

Я могу запустить этот сценарий локально, и, похоже, он работает нормально (ошибок не возникает). Когда я запускаю его на своем сервере сборки, он выходит из строя с ошибкой MSBuild MSB3021.

Теперь, когда я сравниваю свои локальные выходные файлы сборки с выходными файлами сборки сервера, на выходе сервера не так много файлов. Например, на моем сервере сборки отсутствует файл global.ASAX. Почему для меня это работает локально, но не на моем сервере сборки TeamCity? В чем разница и как ее исправить?

Я заметил, что в сообщении об ошибке агента сборки TeamCity указан забавный путь к каталогу: "C: \ MSBUILDRELEASE \ myWebProject1 \ bin \ myWebProject1.dll"

^ Перед папкой bin есть две косые черты. Я нигде не уточняю. Что дает? У меня такое чувство, что я неправильно строю свои веб-проекты (может быть, использую другой подход к задаче?). Кажется, он работает локально, но не на моем сервере сборки.

Правильно ли я создаю свои веб-проекты? Это просто веб-проекты для развертывания веб-службы (ASMX). Помощь?

23
задан D3vtr0n 1 March 2011 в 17:49
поделиться