#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:
Я бы пошел с:
- пользовательский srcript сборки (вызывайте msbuild индивидуально для каждого проекта, который вы хотите опубликовать) (мой предпочтительный вариант, поэтому он дает вам гораздо больше гибкости)
-
пользовательский файл .sln, содержащий только необходимые проекты с единственной целью публикации (более простой вариант, но более сложный в обслуживании)
3. Просто дикое предположение (никогда не пробовал это для развертывания, но, насколько я понимаю, должно работать) — вы можете попробовать использовать
Build -> Configuration Manager
диалоговое окно в VS, чтобы снять флажки сборки для определенных проектов, если вы можете создать отдельные конфигурации решения для отдельных планов развертывания:
Комментарии:
1. Я попытался создать отдельный проект, но затем он жалуется на отсутствие ссылок на проекты, о которых, предположительно, обычно заботится решение. Пользовательское решение похоже на двойную работу. Одна из приятных особенностей профилей публикации заключается в том, что [теоретически] вы можете избавиться от конфигураций сборки, зависящих от среды. Пока ваша идея работает, это означает, что вам нужно скопировать преобразования Release web.config в конфигурацию, специфичную для сборки. Я, честно говоря, склоняюсь к публикации в папке, которая игнорируется, поскольку они являются исключением, если не появится лучшее решение.
2. вы добавляли ссылки на проекты или файлы? msbuild обычно правильно обрабатывает ссылки на проекты при создании файла .csproj / .vbproj. (но, очевидно, у него нет возможности обрабатывать ссылки на файлы)
3. У нас есть ссылки как на проекты, так и на файлы. В любом случае, у нас есть консольные приложения, и они не используют профили публикации, поэтому мне все равно приходится использовать конфигурации сборки, зависящие от среды. В этом случае я могу просто снять флажок построить для этого проекта.