Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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... и изменил текст действия, добавив предупреждение типа "Опубликовать [КОНФИГУРАЦИЯ ДЛЯ РЕЛИЗА!]" И поместив кнопку "Опубликовать" рядом с параметром "Конфигурация отладки/выпуска". Это легко!

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