MSBuild target _CopyWebApplication не копирует все необходимые файлы в папку bin - PullRequest
13 голосов
/ 07 апреля 2010

В других местах в Интернете вы можете найти рекомендации по использованию чего-то подобного для имитации функции публикации в IDE VS 2005-2008 из командной строки (надеюсь, я не ошибся в синтаксисе!)

msbuild /t:ResolveReferences;_CopyWebApplication /p:BuildingProject=true;OutDir=C:\inetpub\wwwroot\ blah.csproj

Теперь, похоже, что копия .dll в порядке. Однако существуют определенные файлы конфигурации и файлы шаблонов, которые копируются в папку bin, необходимые для работы приложения. Например, файл конфигурации NHibernate отображается в blah.csproj как:

<None Include="blah.cfg.xml">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

При использовании функции «Публикация изнутри среды IDE» этот файл копируется должным образом, вышеупомянутая цель _CopyWebApplication - нет. Мне нужно, чтобы этот файл был скопирован в сценарий сборки. Это желаемое поведение для _CopyWebApplication? Любые рекомендации, как это исправить?

РЕДАКТИРОВАТЬ 21.04.2010:

Позвольте мне пояснить, что мы ограничены (на данный момент) проектами VS 2005 и VS 2008, и что наши сценарии сборки написаны для MSBuild 3.x. Мы еще не готовы перейти на VS 2010.

Позвольте мне также указать, что мы ищем решение, доступное из командной строки, чтобы мы могли автоматизировать команду, подобную публикации, наряду с пользовательскими параметрами сборки и, возможно, автоматизировать развертывание в будущем.

Ответы [ 3 ]

6 голосов
/ 23 апреля 2010

Это просто обходной путь.

В сценарии сборки для публикации веб-сайтов после запуска MSBuild в самом веб-проекте для его публикации (Targets = "ResolveReferences; _CopyWebApplication") я добавил операцию копирования:

<Copy SourceFiles="@(ProjectBinFiles)" DestinationFolder="$(StageBin)\%(ProjectBinFiles.RecursiveDir)" />

, где ProjectBinFiles - это элемент, представляющий файлы в каталоге bin в исходном каталоге, а StageBin - это свойство, представляющее папку bin в каталоге опубликованного сайта.Пока что похоже на работу.

0 голосов
/ 16 октября 2013

У меня была такая же проблема в VS 2012, и в конце концов я исправил ее, выполнив следующие действия для всех файлов, которые необходимо скопировать:

  • Установите для свойства Копировать в выходной файл значение Копировать, если новее
  • Установите для свойства файла Build Action значение Content (или Compile, если файл должен быть скомпилирован)
0 голосов
/ 18 апреля 2010

У меня тоже была похожая проблема.Я думаю, что ответ использует MSDeploy .Расследовать это сейчас, но может предоставить требуемую функциональность ...

...