禁止发布ClickOnce部署的调试版本

Dan*_*ngs 21 clickonce

有没有办法禁止使用ClickOnce发布调试版本?

我只想允许发布版本,但是现在人为错误导致调试版本偶尔会漏掉.

我们正在Visual Studio中发布构建.

Sam*_*rie 53

我已经开始修改.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>
Run Code Online (Sandbox Code Playgroud)

只需将其放在文件的末尾,就在</Project>标记之前.

(原始来源:http://www.nathanpjones.com/wp/2010/05/preventing-clickonce-publishing-a-debug-configuration/comment-page-1/#comment-625)

  • 这是最好的答案,不需要批处理文件或一些NuGet包来运行.我进一步调整它,以便所有发布必须是Release/AnyCPU或它将失败.`<Target Name ="BeforePublish"> <Error Condition ="'$(Configuration)'!='Release'或'$(PlatformName)'!='AnyCPU'"Text ="您试图发布不是的配置发布和AnyCPU架构!" /> </ Target>` (6认同)
  • 我喜欢这个答案因为a)它依赖于定义的符号而不是正在使用的构建而b)它不预先假定用于构建的.bat (5认同)
  • @ daniel-jennings这应该是公认的答案! (2认同)

Jud*_*ngo 8

您可以做的一件事是在.csproj或.vbproj文件中添加一个条件,MSBuild在进行构建时会检查该文件.

该条件将检查是否正在发布发布并检查构建是否是调试版本,然后执行诸如运行外部工具或以其他方式中断构建过程或导致其失败的操作.

一个例子可能是这样的:

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

其中foo.bat是一个返回非零的批处理文件,因此停止发布.