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