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

Posted

技术标签:

【中文标题】如何在 ASP.NET Core 中基于解决方案配置运行脚本【英文标题】:How to run scripts based on solution configuration in ASP.NET Core 【发布时间】:2016-06-02 15:27:56 【问题描述】:

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

或者,出于好奇,我如何将解决方案配置传递到下面的命令中,这样“发布”就不会被硬编码。

"scripts": 
  "postcompile": [
    "dotnet pack --no-build --configuration Release"
  ]

【问题讨论】:

【参考方案1】:

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

【讨论】:

在哪里可以找到这些脚本事件可用的完整变量列表?【参考方案2】:

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

@Echo off
IF "%1" == "%2" dotnet pack --no-build --configuration %1 -o ../%3

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

  "scripts":         
    "postcompile": [
      "makeNuget.cmd %compile:Configuration% Release \\packages\\%project:Name%"
    ]
  

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

我还将目标配置设置为参数,以便脚本是通用的,并且无论我选择作为“发布”配置的配置名称如何,都可以使用该脚本。

【讨论】:

以上是关于如何在 ASP.NET Core 中基于解决方案配置运行脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core 中基于 appsettings 有条件地使用授权

如何使用 AuthorizationHandlerContext 在 ASP.NET Core 2 自定义基于策略的授权中访问当前的 HttpContext

如何在 ASP.NET CORE 中使用具有依赖注入的动作过滤器?

如何使用 Asp.Net Core 实现基于权限的访问控制

EF Core 中的 ASP.NET Core 5 MVC 和 Identity - 基于资源的授权

Asp.net core 简单介绍