2015-04-15 2 views
1

Использование действительно простых инструкций по созданию пакета NuGet для сборки с соответствующим пакетом источников для сервера символов, найденный здесь в блоге Дэвида Эббо "The easy way to publish NuGet packages with sources" Я действительно создал пару пакетов: двоичные и источники.Как получить бинарный пакет NuGet с одной сборкой csproj, но соответствующий исходный пакет с двумя источниками csproj?

Однако исходный пакет неполный, и причина в том, что источники исходят из двух классов библиотеки .csproj, и я использовал ILMerge для объединения результатов второго в первый. (*) Итак, используя минимальный .nuspec, описанный в этом сообщении, и указывающий nuget.exe на .csproj для «основной» библиотеки, двоичный пакет в порядке, но, конечно, исходный пакет имеет только источники для «основной» библиотеки, а не для библиотеки, которая была включена в «основную» библиотеку.

Как исправить это (и получить источники для как проектов, включенных в пакет символов, а только двоичный файл для «основного» проекта в двоичном пакете)?

FYI, фактическая nuget.exe командная строка: nuget pack CommandLineLexing.csproj -Build -Symbols -Properties Configuration=Release.

(*) Причина, по которой я делаю это, на случай, если вам интересно, заключается в том, что вторая библиотека - это сокращенная версия моей накопленной библиотеки «C# utilities» - вы знаете, куча методов расширения и другие помощники - сокращаются, поэтому у него есть только минимальный минимум, необходимый для этого конкретного проекта. Итак, поскольку он сокращен, я не хочу, чтобы для него была отдельная сборка, которая в конечном итоге могла бы запутаться с полной сборкой (с тем же именем, а не с сильным именем). Поэтому я использовал ILMerge, чтобы поместить методы утилит в основную сборку (а также отметить их внутренние).

ответ

0

Не будем легкими, я боюсь.

NuGet symbol packages - это просто ваш обычный пакет с pdbs, дополненный исходными файлами.

Предполагая, что вы уже знаете, что вы можете получить объединенный PDB с ILMerge/ILRepack (/ debug), эта часть, вероятно, является рабочим файлом, я предполагаю, что ваша проблема заключается в том, что включены только исходные файлы из текущего проекта.

Вы могли бы просто постобработка своего symbol.nupkg (который является застежкой-молнией), и включают в себя исходные файлы с других (объединенном) проекта в папке Src (вы даже можете попробовать это вручную).

Хотя, если вы запустите srctool.exe -r MyMergedAssembly.pdb, вы увидите разные корневые пути, где обычно (для не объединенного проекта) все они имеют общий префикс.

Это может сработать, если SymbolSource справляется с наличием нескольких префиксов пути в вашем PDB, которые я не пробовал.

Я также не смог найти какую-либо документацию для обработки пакетов символов. Мы можем предположить, что они используют инструмент pdbstr.exe для обновления раздела PDB srcsrv файла PDB для перенаправления загрузки символов на свой веб-сайт, но можно только сказать, поддерживают ли они несколько корней, тестируя его.

Если вы загрузите дополненной пакет символов для symbolsource, вы можете загрузить обновленный PDB, используя URL, похожий на http://srv.symbolsource.org/pdb/Public/Castle.Core.pdb/4C81FC30DF584853B9869EAB2FA7D9891/Castle.Core.pd_ (затем распаковать его в PDB файл)

Затем вы можете использовать как srctool.exe file.pdb и pdbstr.exe -r -s:srcsrv -p:file.pdb к проверить их работу.

Смежные вопросы