【发布时间】:2020-05-11 01:36:43
【问题描述】:
我必须发布同一个基于 .NET Core 3.1 的控制台应用程序的多个版本,这些版本是相同的,这些版本之间的唯一区别是它们需要连接的硬编码服务器地址。
我的问题是,如何在编译时根据 .NET 发布配置更改硬编码变量的值?
【问题讨论】:
-
为什么不使用配置文件或环境变量?这样您就可以为所有部署构建和部署相同的二进制文件,包括继承在其他部署中完成的测试?
我必须发布同一个基于 .NET Core 3.1 的控制台应用程序的多个版本,这些版本是相同的,这些版本之间的唯一区别是它们需要连接的硬编码服务器地址。
我的问题是,如何在编译时根据 .NET 发布配置更改硬编码变量的值?
【问题讨论】:
我同意 cmets 你应该使用配置文件或环境变量如果你仍然坚持硬编码你的所有值,你可以做类似的事情。
硬编码你的变量。
public const string UrlDev = "";
public const string UrlProd = "";
当您即将使用该网址时,您可以像在您的应用中那样做
var url = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development" ? UrlDev : UrlProd
环境变量可以像这样在发布时传递给您的应用程序
dotnet publish /p:Configuration=Release /p:EnvironmentName=Development
上面一行会在csproj文件中创建如下sn-p
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
因此,您使用已附加在应用程序上的环境变量进行发布,然后您决定在此变量上使用哪个 url。
【讨论】: