如何在发布之前根据构建配置重写文件?

时间:2015-12-16 20:14:31

标签: angularjs gulp asp.net-core-mvc gulp-replace

我有一个新的asp.net V5应用程序,它实际上只是一个静态角度站点,我正在尝试做相当于web.config的转换。我的app.js文件有一个常量定义,即serviceUrl,它指向我们api的url(不在同一个站点中)

我已经为每个构建目标使用了gulp-replace和创建的任务,这些目标成功地替换了需要替换的单个字符串。

我遇到的问题是我需要能够根据所选的构建配置更改该服务URL,以便我们可以自动部署等,而不必为每个不同的目标更改该URL。 (即dev转到devapi.xxx.com并发布到https://api.xxx.com等。)

我找到了preublish脚本部分,但它似乎不允许我根据配置进行特定。配置部分似乎不允许我指定将运行的脚本。

所以我的问题是,如何进行预发布步骤,根据配置在上下文中查找并替换该字符串?

1 个答案:

答案 0 :(得分:0)

你应该看看Working with Multiple Environments

基本上,您的appsettings.json就是您要找的。在你的Startup.cs中,你应该有一条看起来像这样的行:

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

默认情况下,在Visual Studio中,ASPNET_ENV环境变量将设置为Development。如果未由Visual Studio运行,则默认为Production

因此,根据定义,在生产环境中运行您的应用时,它会自动覆盖appsettings.jsonappsettings.Production.json

该文件当然是可选的,可以由您的IT部门保存,其中包含所有宝贵的密码。

如果您要存储密码和连接字符串,我强烈建议您阅读Safe Storage of Application Secrets