.net dotnet publish,如果是在运行时运行的已发布版本,则确定

omqzjyyz  于 2023-01-10  发布在  .NET
关注(0)|答案(1)|浏览(120)

假设我跑了
第一个月
我可以在代码中确定这是一个已发布版本吗?
我想要这样的.
if(<something>.IsPublished && !hostContext.HostingEnvironment.IsProduction()) throw new NotSupportedException("Published apps support only Production environment"
我知道Debug,Release开关。这不是我要找的。

yb3bgrhw

yb3bgrhw1#

创建一个独立的配置而不是Debug & Release将允许您进行编译时检查。也就是说,您可以拥有甚至不存在于您的Debug/Release构建中的代码。
让我们创建一个名为Published的变量。
根据您管理项目的方式,有几种方法可以完成此操作。

如果使用VS和解决方案文件

右键单击您的解决方案,然后选择Configuration Manager...
在“Active solution configuration:”下拉菜单下,选择“<New...>

  • 名称:Published
  • 复制设置自:Release
  • 创建新项目配置:✔

如果仅使用.csproj文件,而不使用.sln文件

将以下内容添加到.csproj文件中:

<PropertyGroup>
  <Configurations>Debug;Release;Published</Configurations>
</PropertyGroup>

这将导致定义一个名为PUBLISHED的编译时符号。
然后,您可以在编译时检查中使用它,如下所示:

#if PUBLISHED
  if(!hostContext.HostingEnvironment.IsProduction())
    throw new NotSupportedException("Sorry..");
#endif

然后执行常用的dotnet publish -c Published

相关问题