为了账号安全,请及时绑定邮箱和手机立即绑定

如何在发布构建工件时设置变量值?

如何在发布构建工件时设置变量值?

C#
泛舟湖上清波郎朗 2022-10-23 13:29:14
下面是我用来从appsettings.json文件中读取 AppName 的代码片段。Startup.cs → ConfigureServices()services.Configure<CustomConfig>(Configuration.GetSection("CustomConfig"));services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<CustomConfig>>().Value);自定义配置文件public class CustomConfig{   public string AppName { get; set; }}但我的要求是,AppName会根据不同的客户而变化,但同时不应该在appsettings.json文件中维护。所以我的问题是,如何在发布应用程序时设置变量值,而不是从配置文件/环境级别变量中读取它?
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

ASP.NET Core 不使用构建配置,并且发布的代码并不特定于任何类型的环境。这是设计使然。您最好的选择是可能为每个客户分配自己的环境。然后,您可以拥有特定于客户的 appsettings.json 文件:appsettings.Customer1.jsonappsettings.Customer2.json等。

使用的实际环境通常由ASPNETCORE_ENVIRONMENT环境变量控制,尽管还有其他方法来指定环境。根据您最终托管的方式,执行此操作的最佳方法会有所不同。如果您在容器或 Azure 应用服务之类的东西中运行,那么只需坚持使用ASPNETCORE_ENVIRONMENT环境变量,它可以很容易地为每个正在运行的实例设置。

如果您直接从命令行启动应用程序,则可以--environment在调用 running 时通过命令行参数传递环境dotnet

例如,如果您将这些都托管在同一个 IIS 服务器上,那么您可以将其添加到 Web.config,但您可能需要一个比这更强大的解决方案。如果您为每个客户创建发布配置文件,则可以将以下内容添加到每个发布配置文件 ( .pubxml):

<PropertyGroup>
  <EnvironmentName>Customer1</EnvironmentName>
  </PropertyGroup>

然后,当您使用该特定配置文件发布时,该环境将自动添加到Web.config您的配置文件中。但是,这只是获取Web.config. 实际发布的应用程序没有功能差异,您可以在事后轻松进入并将环境切换到其他环境。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信