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

下面是我用来从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文件中维护。


所以我的问题是,如何在发布应用程序时设置变量值,而不是从配置文件/环境级别变量中读取它?


泛舟湖上清波郎朗
浏览 91回答 1
1回答

慕盖茨4494581

ASP.NET Core 不使用构建配置,并且发布的代码并不特定于任何类型的环境。这是设计使然。您最好的选择是可能为每个客户分配自己的环境。然后,您可以拥有特定于客户的 appsettings.json 文件:appsettings.Customer1.json、appsettings.Customer2.json等。使用的实际环境通常由ASPNETCORE_ENVIRONMENT环境变量控制,尽管还有其他方法来指定环境。根据您最终托管的方式,执行此操作的最佳方法会有所不同。如果您在容器或 Azure 应用服务之类的东西中运行,那么只需坚持使用ASPNETCORE_ENVIRONMENT环境变量,它可以很容易地为每个正在运行的实例设置。如果您直接从命令行启动应用程序,则可以--environment在调用 running 时通过命令行参数传递环境dotnet。例如,如果您将这些都托管在同一个 IIS 服务器上,那么您可以将其添加到 Web.config,但您可能需要一个比这更强大的解决方案。如果您为每个客户创建发布配置文件,则可以将以下内容添加到每个发布配置文件 (&nbsp;.pubxml):<PropertyGroup> &nbsp;&nbsp;<EnvironmentName>Customer1</EnvironmentName> &nbsp;&nbsp;</PropertyGroup>然后,当您使用该特定配置文件发布时,该环境将自动添加到Web.config您的配置文件中。但是,这只是获取Web.config.&nbsp;实际发布的应用程序没有功能差异,您可以在事后轻松进入并将环境切换到其他环境。
打开App,查看更多内容
随时随地看视频慕课网APP