假设我跑了第一个月我可以在代码中确定这是一个已发布版本吗?我想要这样的.if(<something>.IsPublished && !hostContext.HostingEnvironment.IsProduction()) throw new NotSupportedException("Published apps support only Production environment"我知道Debug,Release开关。这不是我要找的。
if(<something>.IsPublished && !hostContext.HostingEnvironment.IsProduction()) throw new NotSupportedException("Published apps support only Production environment"
yb3bgrhw1#
创建一个独立的配置而不是Debug & Release将允许您进行编译时检查。也就是说,您可以拥有甚至不存在于您的Debug/Release构建中的代码。让我们创建一个名为Published的变量。根据您管理项目的方式,有几种方法可以完成此操作。
Debug
Release
Published
右键单击您的解决方案,然后选择Configuration Manager...在“Active solution configuration:”下拉菜单下,选择“<New...>
Configuration Manager...
Active solution configuration:
<New...>
将以下内容添加到.csproj文件中:
<PropertyGroup> <Configurations>Debug;Release;Published</Configurations> </PropertyGroup>
这将导致定义一个名为PUBLISHED的编译时符号。然后,您可以在编译时检查中使用它,如下所示:
PUBLISHED
#if PUBLISHED if(!hostContext.HostingEnvironment.IsProduction()) throw new NotSupportedException("Sorry.."); #endif
然后执行常用的dotnet publish -c Published
dotnet publish -c Published
1条答案
按热度按时间yb3bgrhw1#
创建一个独立的配置而不是Debug & Release将允许您进行编译时检查。也就是说,您可以拥有甚至不存在于您的
Debug
/Release
构建中的代码。让我们创建一个名为
Published
的变量。根据您管理项目的方式,有几种方法可以完成此操作。
如果使用VS和解决方案文件
右键单击您的解决方案,然后选择
Configuration Manager...
在“
Active solution configuration:
”下拉菜单下,选择“<New...>
Published
Release
如果仅使用.csproj文件,而不使用.sln文件
将以下内容添加到.csproj文件中:
这将导致定义一个名为
PUBLISHED
的编译时符号。然后,您可以在编译时检查中使用它,如下所示:
然后执行常用的
dotnet publish -c Published