We use Team City’s built in nuget server and symbol server to host prerelease nugets.
Debug and Release Build Configuration¶
We build prerelease nugets with the Debug configuration for maximum information while developing. Release builds are build with the Release configuration. There seems to be less information available to Release builds when debuging because it get optimized away.
To make Debug and Release builds work we require that build output be localed in the bin folder not the default bin/debug and bin/release
Prerelease builds need the Symbol Indexer build feature turned on. It is what adds symbol information to the pdb file. If this is not run successfully symbols will not be downloadable. You know it runs when you see something similar to the following in the build output.
Indexing sources appeared in file C:\TeamCity\BuildAgents\BuildAgent03\work\ebeb9ff100c9190e\Source\Improving.DbUp\bin\Improving.DbUp.pdb [15:52:06]Information about 6 source files was updated
Do not add the Symbol Indexer to release builds that are being pushed to nuget and SymbolSource.org.
Dll’s have 2 fields that uniquely itentify them. The signature and the age. Running the Symbol Indexer
will increment the age in the dll and then
nuget.exe with increment the age again. The dll age will no longer
match and you will not be able to download symbols.