问题
I have the following script in my project.json
file which I am using to build my class library project into a NuGet package. I don't want to build any Debug NuGet packages. How can I limit this script to only run when the solution configuration is set to Release mode to speed up the build time in debug mode?
Alternatively, as a matter of curiosity, how can I pass the solution configuration into the command below so that 'Release' is not hard coded.
"scripts": {
"postcompile": [
"dotnet pack --no-build --configuration Release"
]
}
回答1:
You can use %compile:Configuration%
to get the current Configuration. Here is the list of variables available to precompile
and postcompile
scripts.
回答2:
To actually limit the creation of the nuget package based on the configuration, you'll need to pass it into a script, like this makeNuget.cmd file which I store at the root of my project:
@Echo off
IF "%1" == "%2" dotnet pack --no-build --configuration %1 -o ../%3
Then, in my project.json, I have:
"scripts": {
"postcompile": [
"makeNuget.cmd %compile:Configuration% Release \\packages\\%project:Name%"
]
}
This creates the nuget package and places it in my solution level packages/[project name] folder (though you may need to adjust the relative folder reference in the -o parameter depending on your solution layout). Also, you don't need the .cmd, by default .cmd is inferred for windows and .sh for other environments.
I also made the target configuration a parameter so that the script is generic and can be used regardless of the configuration name I've chosen as my 'release' config.
来源:https://stackoverflow.com/questions/37596115/how-to-run-scripts-based-on-solution-configuration-in-asp-net-core