如何确保项目仅在 Release 配置中发布,同时仍允许我在其他配置中进行调试?

How can I ensure a project only publishes in Release configuration while still letting me debug in other configurations?

我有两个 .NET Framework 应用程序,一个是 ClickOnce 应用程序,另一个是 Web 应用程序,我想防止它们与调试配置一起发布。

如何强制 Visual Studio 仅在发布配置中发布它们,同时仍然允许我在其他配置中构建和调试?

限制发布配置文件可以通过在 .csproj(或 .pubxml 用于 Web 应用程序)文件中包含构建目标来实现项目,如此处所示。这不会强制 Visual Studio 仅在 Release 构建配置中发布。但如果它不是 运行 在 Release 构建配置中将导致失败。

对于 ClickOnce WinForms 项目

当我直接重新定义 `BeforePublish` 目标时遇到了一个找不到目录的奇怪错误,所以我使用 `BeforeTargets` 在它之前做了这个 运行。
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  ...
  <Target Name="ErrorWhenPublishingNotInReleaseMode" BeforeTargets="BeforePublish" Condition="'$(Configuration)' != 'Release'">
    <Error Text="The application must only be published in the &quot;Release&quot; configuration." />
  </Target>
</Project>

对于 .NET Framework Web 应用程序

将以下内容添加到您用于发布的 .pubxml 文件中。 .csproj 文件在发布此类 Web 应用程序时似乎没有被使用。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  ...
  <Target Name="AfterBuild" Condition="'$(Configuration)' != 'Release'">
    <Error Text="The application must only be published in the &quot;Release&quot; configuration." />
  </Target>
</Project>

可在此处找到其他可用目标(<Target> 名称属性):https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-targets?view=vs-2019

可在此处找到有关如何使用 Target 标签的 Condition 属性 的参考:https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-conditions?view=vs-2019

我确实找到了其他类型的相关问题,Can I force Visual Studio to use only a Release build configuration for my production publish profile?,但该问题对其他要求过于具体,而且为我的问题选择的答案不正确。