Запретить публикацию отладочных сборок для развертывания ClickOnce - PullRequest
19 голосов
/ 06 сентября 2008

Есть ли способ запретить публикацию отладочных сборок с ClickOnce?

Я хочу разрешить только сборки релизов, но сейчас из-за человеческих ошибок время от времени проскакивает сборка отладки.

Мы публикуем сборку из Visual Studio.

Ответы [ 3 ]

50 голосов
/ 26 февраля 2013

Я начал изменять файлы .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)

7 голосов
/ 15 мая 2009

Одна вещь, которую вы можете сделать, это добавить условие в файл .csproj или .vbproj, который MSBuild будет проверять при выполнении сборки.

Условие будет проверять, происходит ли публикация, и проверять, является ли сборка отладочной сборкой, затем делать что-то вроде запуска внешнего инструмента или иным образом прерывать процесс сборки или вызывать его сбой.

Примером может быть что-то вроде этого:

<Choose>
    <When Condition=" '$(Configuration)'=='Debug' ">
        <Exec Command="C:\foo.bat" ContinueOnError="false" />
    </When>
 </Choose>

Где foo.bat - пакетный файл, который возвращает ненулевое значение, тем самым предотвращая публикацию.

3 голосов
/ 19 июля 2011

Я выбрал другое решение, которое сработало для меня:

Я не мог изменить процесс сборки. Итак, я выполнил Инструменты Настроить ... и изменил текст действия, добавив предупреждение типа «Опубликовать [НАСТРОЙКА В РЕЛИЗ! опция конфигурации Debug / Release. Это просто!

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

...