7

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?

Leotsarev
  • 1,040
  • 7
  • 23

2 Answers2

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

0

Correct way is:

  1. Call nuget pack .nuspec from .csproj
  2. Pass Version extracted from Assembly as parameters.
  3. Make Appveyor update version on rebuild
  4. Configure Appveyor to capture .nupkg`s to artifacts and push it.

See https://github.com/leotsarev/hardcode-analyzer as example

Leotsarev
  • 1,040
  • 7
  • 23