如何在ASP.NET Core中基于解决方案配置运行脚本

Muh*_*eed 15 asp.net-core-mvc .net-core project.json asp.net-core

我在我的project.json文件中有以下脚本,我用它来构建我的类库项目到NuGet包中.我不想构建任何Debug NuGet包.如何将此脚本限制为仅在解决方案配置设置为"释放"模式时运行,以加快调试模式下的构建时间?

或者,作为好奇心,如何将解决方案配置传递到下面的命令中,以便"释放"不是硬编码的.

"scripts": {
  "postcompile": [
    "dotnet pack --no-build --configuration Release"
  ]
}
Run Code Online (Sandbox Code Playgroud)

Paw*_*wel 19

您可以使用%compile:Configuration%获取当前配置.以下是可用于precompilepostcompile脚本的变量列表.

  • 我们在哪里可以找到这些脚本事件可用的完整变量列表? (2认同)

Eri*_*est 5

要根据配置实际限制nuget包的创建,您需要将其传递给脚本,例如我存储在项目根目录下的makeNuget.cmd文件:

@Echo off
IF "%1" == "%2" dotnet pack --no-build --configuration %1 -o ../%3
Run Code Online (Sandbox Code Playgroud)

然后,在我的project.json中,我有:

  "scripts": {        
    "postcompile": [
      "makeNuget.cmd %compile:Configuration% Release \\packages\\%project:Name%"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

这将创建nuget包并将其放在我的解决方案级别包/ [项目名称]文件夹中(尽管您可能需要根据解决方案布局调整-o参数中的相对文件夹引用).此外,您不需要.cmd,默认情况下.cmd是针对Windows推断的,而.shd是针对其他环境推断的.cmd.

我还将目标配置作为参数,以便脚本是通用的,无论我选择哪个配置名称作为我的'release'配置,都可以使用它.