问题
I'm trying to invent good way to pack my Roslyn analyzer projects into NuGet.
It requires specific NuGet package structure with .dll put into \analyzer\, not \lib\.
For this to work, I have to call nuget pack <name>.nuspec, not nuget pack <name>.csproj. But if I use nuspec, than $version$ tag gets ignored.
Seems that my only option is to manually update version in .nuspec on every rebuild. What is correct and right way to accomplish this?
回答1:
I just had the same problem. I don't like the idea of adding an after-build instruction to my csproj file (I don't want to build the nuget package every time I compile), so instead I configured an "after build script" in AppVeyor:
nuget pack "yournuspecfile.nuspec" -Version %APPVEYOR_BUILD_VERSION%
The nuspec contains a dummy <version> tag, the actual version is specified in the nuget pack command using the %APPVEYOR_BUILD_VERSION% environment variable which is provided by AppVeyor
回答2:
Correct way is:
- Call nuget pack .nuspec from .csproj
- Pass Version extracted from Assembly as parameters.
- Make Appveyor update version on rebuild
- Configure Appveyor to capture .nupkg`s to artifacts and push it.
See https://github.com/leotsarev/hardcode-analyzer as example
来源:https://stackoverflow.com/questions/43610749/appveyor-nuget-analyser