【问题标题】:How to rewrite a file before publish based on build configuration?如何根据构建配置在发布之前重写文件?
【发布时间】:2015-12-16 20:14:31
【问题描述】:

我有一个新的 asp.net V5 应用程序,它实际上只是一个静态 Angular 站点,我正在尝试执行与 web.config 转换等效的操作。我的 app.js 文件定义了一个常量,即 serviceUrl,它指向我们 api 的 url(不在同一个站点中)

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

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

我找到了预发布脚本部分,但它似乎不允许我根据配置进行具体说明。配置部分似乎不允许我指定将运行的脚本。

所以我的问题是,如何执行发布前步骤,根据配置根据上下文查找和替换该字符串?

【问题讨论】:

  • 好的,但我不知道如何使用该信息更新 js 文件,所以 js 文件以某种方式加载?这里没有 mvc,所以我不能从 mvc 注入它。

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


【解决方案1】:

你应该看看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.Production.json 覆盖appsettings.json 值。

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

但是,如果您要存储密码和连接字符串,我强烈建议您阅读有关 Safe Storage of Application Secrets 的内容。

【讨论】:

  • 我的问题是我不知道如何将其放入 js 文件中,除非您在已交换的发布脚本上这么说,我可以在 gulp 中加载它并读出值?
  • 您可以生成一个包含您的 URL 的 JSON。反序列化非常好。 :-)
  • 对,但我如何根据构建配置在上下文中执行它?我无法在 gulp 中说出构建配置是什么,而且据我所知,我无法注入它?
  • 检查 gulp 和环境变量。有一个包可以检索它,因为它是ASPNET_ENVProduction 。无论如何,您都可以读取 JSON 文件,因为您会大吃一惊。
  • 谢谢!关于如何在 gulp 中获取环境变量的任何指针?
猜你喜欢
  • 1970-01-01
  • 2012-11-07
  • 2015-09-18
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多