Запретить публикацию отладочных сборников для развертывания ClickOnce
Есть ли способ запретить публикацию отладочных сборников с помощью ClickOnce?
Я хочу только разрешить сборку релизов, но сейчас человеческая ошибка заставляет сборку отладки проскальзывать через некоторое время.
Мы публикуем сборку из Visual Studio.
Ответы
Ответ 1
Одна вещь, которую вы можете сделать, это добавить условие к файлу .csproj или .vbproj, который MSBuild проверит при выполнении сборки.
Условие будет проверять, происходит ли публикация, и проверить, является ли сборка сборкой отладки, затем выполнить что-то вроде запуска внешнего инструмента или иным образом прервать процесс сборки или привести к сбою.
Пример может выглядеть примерно так:
<Choose>
<When Condition=" '$(Configuration)'=='Debug' ">
<Exec Command="C:\foo.bat" ContinueOnError="false" />
</When>
</Choose>
Где foo.bat - пакетный файл, который возвращает ненулевое значение, тем самым останавливая публикацию.
Ответ 2
Я начал изменять файлы .csproj, чтобы включить следующий код, чтобы выбросить ошибку для развертывания отладки, эффективно предотвращая развертывание:
<!-- The following makes sure we don’t try to publish a configuration that defines the DEBUG constant -->
<Target Name="BeforePublish">
<Error Condition="'$(DebugSymbols)' == 'true'" Text="You attempted to publish a configuration that defines the DEBUG constant!" />
</Target>
Просто поместите его в конец файла прямо перед тегом </Project>
.
(исходный источник: http://www.nathanpjones.com/wp/2010/05/preventing-clickonce-publishing-a-debug-configuration/comment-page-1/#comment-625)
Ответ 3
Я выбрал другое решение, которое сработало для меня:
Я не мог изменить свой процесс сборки. Итак, я сделал Tools → Customize... и изменил текст действия, добавив предупреждение типа "Опубликовать [КОНФИГУРАЦИЯ ДЛЯ РЕЛИЗА!]" И поместив кнопку "Опубликовать" рядом с параметром "Конфигурация отладки/выпуска". Это легко!
С этим я значительно уменьшил риск человеческой ошибки. Эти кнопки всегда должны быть вместе.