В настоящее время я упаковываю сборки выпуска с помощью Nuget для официальных сборок на nuget.org, но я упаковываю сборки отладки с помощью Nuget для того, чтобы источник символов отправлял символы на symbolsource.org.
РЕДАКТИРОВАТЬ: (Джон Скит, с некоторым предубеждением от разработки Noda Time)
NuGet теперь поддерживает отправку как в галерею NuGet, так и в symbolsource.org (или аналогичные серверы), как описано в документации . К сожалению, здесь есть два противоречащих друг другу требования:
- Когда вы просто используете библиотеку без необходимости отладки, вам действительно нужна сборка выпуска. В конце концов, для этого и нужны релизные сборки.
- При отладке в библиотеку для диагностических целей вам действительно нужна отладочная сборка с отключенными всеми соответствующими оптимизациями. В конце концов, для этого и нужны отладочные сборки.
Это было бы хорошо, но NuGet не позволяет (насколько я могу судить) публиковать как релизную, так и отладочную сборки полезным способом в одном пакете.
Итак, варианты:
- Распространяйте отладочные сборки для всех (как показано в примере в документации) и работайте с любым размером и падением производительности.
- Распространите сборки релиза среди всех и живите с немного ослабленным опытом отладки.
- Используйте действительно сложную политику распространения, потенциально предоставляя отдельные пакеты выпуска и отладки.
Первые два на самом деле сводятся к влиянию различий между отладочной и выпускной сборками ... хотя стоит отметить, что есть большая разница между желанием войти в код библиотеки, потому что вы хотите проверить какое-то поведение, и желанием для отладки кода библиотеки, потому что вы считаете, что нашли ошибку. Во втором случае, вероятно, лучше получить код библиотеки как решение Visual Studio и отладить таким образом, поэтому я не обращаю слишком много внимания на эту ситуацию.
У меня есть искушение просто придерживаться релизных сборок, ожидая, что отладку потребуется относительно небольшому количеству людей, а на тех, кто это сделает, оптимизация релизной сборки не сильно повлияет . (В любом случае компилятор JIT выполняет большую часть оптимизации.)
Итак, есть ли другие варианты, которые мы не рассматривали? Есть ли другие соображения, которые склоняют чашу весов? Является ли размещение пакетов NuGet в SymbolSource достаточно новым, чтобы действительно не было «лучших практик»?
nuget pack ... -Symbol
и отправляю сгенерированные пакеты ...