如何在 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 是precompile
和postcompile
脚本可用的变量列表。
【讨论】:
在哪里可以找到这些脚本事件可用的完整变量列表?【参考方案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 中使用具有依赖注入的动作过滤器?