如何 运行 脚本基于 ASP.NET Core 中的解决方案配置
How to run scripts based on solution configuration in ASP.NET Core
我的 project.json
文件中有以下脚本,我用它来将我的 class 库项目构建到 NuGet 包中。我不想构建任何 Debug NuGet 包。当解决方案配置设置为发布模式以加快调试模式下的构建时间时,如何将此脚本限制为仅 运行?
或者,出于好奇,我怎样才能将解决方案配置传递到下面的命令中,这样 'Release' 就不会被硬编码。
"scripts": {
"postcompile": [
"dotnet pack --no-build --configuration Release"
]
}
您可以使用%compile:Configuration%
获取当前配置。 Here 是 precompile
和 postcompile
脚本可用的变量列表。
要根据配置实际限制 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 包并将其放置在我的解决方案级 packages/[项目名称] 文件夹中(尽管您可能需要根据您的解决方案布局调整 -o 参数中的相对文件夹引用)。此外,您不需要 .cmd,默认情况下推断 .cmd 用于 windows 和 .sh 用于其他环境。
我还将目标配置作为一个参数,以便脚本是通用的,并且无论我选择什么配置名称作为我的 'release' 配置都可以使用。
我的 project.json
文件中有以下脚本,我用它来将我的 class 库项目构建到 NuGet 包中。我不想构建任何 Debug NuGet 包。当解决方案配置设置为发布模式以加快调试模式下的构建时间时,如何将此脚本限制为仅 运行?
或者,出于好奇,我怎样才能将解决方案配置传递到下面的命令中,这样 'Release' 就不会被硬编码。
"scripts": {
"postcompile": [
"dotnet pack --no-build --configuration Release"
]
}
您可以使用%compile:Configuration%
获取当前配置。 Here 是 precompile
和 postcompile
脚本可用的变量列表。
要根据配置实际限制 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 包并将其放置在我的解决方案级 packages/[项目名称] 文件夹中(尽管您可能需要根据您的解决方案布局调整 -o 参数中的相对文件夹引用)。此外,您不需要 .cmd,默认情况下推断 .cmd 用于 windows 和 .sh 用于其他环境。
我还将目标配置作为一个参数,以便脚本是通用的,并且无论我选择什么配置名称作为我的 'release' 配置都可以使用。