Можно ли игнорировать определенные проекты при публикации решения?

#msbuild #publish-profiles

#msbuild #публикация-профили

Вопрос:

У нас есть некоторые проекты, которые используются только в некоторых средах, поэтому я бы хотел, чтобы публикация пропускала их. Однако при публикации всего решения я получаю следующую ошибку msbuild:

 "C:SourceSolution.sln" (default target) (1) ->
"C:SourceProjectProject.csproj" (default target) (51) ->
(ValidatePublishProfileSettings target) ->
  C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebMicrosoft.Web.Publishing.targets(4253,5): error : The value for PublishProfile is set to 'Sta
ge', expected to find the file at 'C:SourceProjectPropertiesPublishProfilesStage.pubxml' but it could not be found. [C:SourceProjectProject.csproj]
  C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebMicrosoft.Web.Publishing.targets(4260,4): error : PublishProfile(Stage) is set. But the $(Web
PublishMethod) does not have a valid value.  Current Value is "". [C:SourceProjectProject.csproj]
  C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebMicrosoft.Web.Publishing.targets(4267,5): error : Target ValidatePublishProfileSettings Faile
d [C:SourceProjectProject.csproj]
  

Есть ли какой-либо способ игнорировать проект при публикации решения, чтобы я не получал ошибок сборки?

Ответ №1:

Я бы пошел с:

  1. пользовательский srcript сборки (вызывайте msbuild индивидуально для каждого проекта, который вы хотите опубликовать) (мой предпочтительный вариант, поэтому он дает вам гораздо больше гибкости)
  2. пользовательский файл .sln, содержащий только необходимые проекты с единственной целью публикации (более простой вариант, но более сложный в обслуживании)

    3. Просто дикое предположение (никогда не пробовал это для развертывания, но, насколько я понимаю, должно работать) — вы можете попробовать использовать Build -> Configuration Manager диалоговое окно в VS, чтобы снять флажки сборки для определенных проектов, если вы можете создать отдельные конфигурации решения для отдельных планов развертывания: диспетчер конфигурации

Комментарии:

1. Я попытался создать отдельный проект, но затем он жалуется на отсутствие ссылок на проекты, о которых, предположительно, обычно заботится решение. Пользовательское решение похоже на двойную работу. Одна из приятных особенностей профилей публикации заключается в том, что [теоретически] вы можете избавиться от конфигураций сборки, зависящих от среды. Пока ваша идея работает, это означает, что вам нужно скопировать преобразования Release web.config в конфигурацию, специфичную для сборки. Я, честно говоря, склоняюсь к публикации в папке, которая игнорируется, поскольку они являются исключением, если не появится лучшее решение.

2. вы добавляли ссылки на проекты или файлы? msbuild обычно правильно обрабатывает ссылки на проекты при создании файла .csproj / .vbproj. (но, очевидно, у него нет возможности обрабатывать ссылки на файлы)

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