Запретить публикацию отладочных сборок для развертывания ClickOnce.
-
09-06-2019 - |
Вопрос
Есть ли способ запретить публикацию отладочных сборок с помощью ClickOnce?
Я хочу разрешить только выпускные сборки, но сейчас из-за человеческой ошибки время от времени отладочная сборка проскальзывает.
Мы публикуем сборку из Visual Studio.
Решение
Единственное, что вы можете сделать, — это добавить в файл .csproj или .vbproj условие, которое MSBuild будет проверять при выполнении сборки.
Условие будет проверять, происходит ли публикация, и проверять, является ли сборка отладочной сборкой, а затем выполнять что-то вроде запуска внешнего инструмента или иным образом прерывать процесс сборки или вызывать его сбой.
Примером может быть что-то вроде этого:
<Choose>
<When Condition=" '$(Configuration)'=='Debug' ">
<Exec Command="C:\foo.bat" ContinueOnError="false" />
</When>
</Choose>
Где foo.bat — это пакетный файл, который возвращает ненулевое значение, что предотвращает публикацию.
Другие советы
Я начал изменять файлы .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)
Я выбрал другое решение, которое сработало для меня:
Я не мог изменить процесс сборки.Так я и сделал Инструменты → Настроить... и измените текст действия, добавив предупреждение типа «Опубликовать [НАСТРОЙКА ДЛЯ ВЫПУСКА!]» и разместив кнопку «Опубликовать» рядом с параметром конфигурации «Отладка/Выпуск».Это просто!
Благодаря этому я значительно снизил риск человеческой ошибки.Эти кнопки всегда должны быть вместе.