如何在MSBuild或NPM脚本上获取ASP.NET核心启动环境?

如何在MSBuild或NPM脚本上获取ASP.NET核心启动环境?,npm,asp.net-core,msbuild,visual-studio-code,visual-studio-2017,Npm,Asp.net Core,Msbuild,Visual Studio Code,Visual Studio 2017,ASP.NET核心环境是通过设置名为的环境变量来指定的。Visual Studio 2017使用launchSettings.json文件,Visual Studio代码使用launch.json文件传递每个会话的环境变量以进行调试 这样,就可以使用Visual Studio 2017和debug为开发、登台和生产定义不同的概要文件,而无需设置系统范围的环境变量 我想知道是否可以将launchSettings.json/launch.json设置的环境合并到构建过程中 MSBuild(.cspr

ASP.NET核心环境是通过设置名为的环境变量来指定的。Visual Studio 2017使用
launchSettings.json
文件,Visual Studio代码使用
launch.json
文件传递每个会话的环境变量以进行调试

这样,就可以使用Visual Studio 2017和debug为开发、登台和生产定义不同的概要文件,而无需设置系统范围的环境变量

我想知道是否可以将
launchSettings.json
/
launch.json
设置的环境合并到构建过程中

  • MSBuild(.csproj)

    $(ASPNETCORE\u环境)
    返回空值,除非我设置了全局环境变量。由于构建项目是在启动它之前完成的,我怀疑我能否获得启动配置文件中指定的环境

  • NPM(package.json)

    我在我的
    package.json
    文件中定义了多个脚本,我希望将当前环境传递给我的构建脚本,尽管前面的一点适用

  • 我正在使用.csproj文件中定义的
    DEV
    /
    PROD
    常量,并通过.NET Core之前的
    元素执行相关的NPM脚本。这样,使用PROD常量编译项目就为发布做好了准备


    我想知道目前在这方面的最佳做法是什么。

    在构建过程中应该避免使用环境。环境与应用程序的启动位置有关,换句话说,应该只影响应用程序的运行方式=>相同版本的应用程序应该适用于所有可用的环境(但是的,可能会有不同的工作方式)感谢@Set,这对于MSBuild部分是有意义的。但即使它不是编译时常量,我仍然需要从Node.js访问它(与gulp/grunt/webpack/etc一起使用)。我认为我还应该能够在不改变全局环境变量的情况下测试不同的环境。这样看来,您就不需要依赖ASPNETCORE_环境值了。相反,将自定义参数传递给您运行的脚本。例如,对于MSBuild look into,但我确实依赖于ASP.NET核心环境—这是我调用
    env.IsDevelopment()
    时框架所提供的。我正在寻找的是一种在NPM脚本上访问该值的方法,这样我就不必编辑多个文件来更改我的环境。我想我可以只创建当前环境所需的资产。但我想我需要更改我的(NPM)构建脚本,以便它们为调试和生产环境创建资产,而不知道将使用哪种环境(就像您为MSBuild所说的)。只需使用环境标记从ASP.NET中引用正确的文件集。