Поделиться через


Создание пакетов символов прежних версий (.symbols.nupkg)

Внимание

Новый рекомендуемый формат для пакетов символов — .snupkg. См. раздел Создание пакетов символов (.snupkg).
Формат .symbols.nupkg все еще поддерживается, но только в целях совместимости.

Наряду с возможностью создания пакетов для веб-сайта nuget.org или других источников NuGet также позволяет создавать связанные пакеты символов, которые можно опубликовать на серверах символов.

Создание пакета символов прежних версий

При создании пакета символов прежних версий руководствуйтесь следующими соглашениями:

  • Присвойте имя основному пакету (с кодом) {identifier}.nupkg и включите в него все файлы, за исключением файлов .pdb.
  • Присвойте пакету имя {identifier}.symbols.nupkg и включите в него DLL-файл сборки, файлы .pdb, XMLDOC-файлы и файлы с исходным кодом (см. далее).

Можно создать оба пакета с использованием параметра -Symbols на основе файла .nuspec или файла проекта:

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

Обратите внимание, что команда pack требует наличия Mono 4.4.2 в Mac OS X и не работает в системах Linux. На компьютерах Mac также необходимо преобразовать пути в формате Windows, указанные в файле .nuspec, в формат Unix.

Структура пакета символов прежних версий

Как и пакет библиотек, пакет символов прежних версий может предназначаться для нескольких целевых платформ, поэтому структура папки lib должна точно соответствовать основному пакету и включать файлы .pdb вместе с DLL.

Например, пакет символов устаревших версий для .NET 4.0 и Silverlight 4 должен иметь следующую структуру:

\lib
    \net40
        \MyAssembly.dll
        \MyAssembly.pdb
    \sl40
        \MyAssembly.dll
        \MyAssembly.pdb

Файлы исходного кода размещаются в отдельной папке src, которая должна соответствовать относительной структуре репозитория исходного кода. Это связано с тем, что PDB-файлы содержат абсолютные пути к файлам исходного кода, используемым для компиляции соответствующей библиотеки DLL, и должны быть доступны в процессе публикации. Базовый путь (общий префикс пути) может быть опущен. Например, рассмотрим библиотеку, построенную на основе следующих файлов:

C:\Projects
    \MyProject
        \Common
            \MyClass.cs
        \Full
            \Properties
                \AssemblyInfo.cs
            \MyAssembly.csproj (producing \lib\net40\MyAssembly.dll)
        \Silverlight
            \Properties
                \AssemblyInfo.cs
            \MySilverlightExtensions.cs
            \MyAssembly.csproj (producing \lib\sl4\MyAssembly.dll)

Кроме папки lib, пакет символов прежних версий должен содержать следующую структуру:

\src
    \Common
        \MyClass.cs
    \Full
        \Properties
            \AssemblyInfo.cs
    \Silverlight
        \Properties
            \AssemblyInfo.cs
        \MySilverlightExtensions.cs

Ссылки на файлы в nuspec

Пакет символов прежних версий можно создать в соответствии с соглашениями на основе структуры папок, как описывается в предыдущем разделе, а также путем указания его содержимого в разделе files манифеста. Например, чтобы построить показанный в предыдущем разделе пакет, используйте следующий файл .nuspec:

<files>
    <file src="Full\bin\Debug\*.dll" target="lib\net40" />
    <file src="Full\bin\Debug\*.pdb" target="lib\net40" />
    <file src="Silverlight\bin\Debug\*.dll" target="lib\sl40" />
    <file src="Silverlight\bin\Debug\*.pdb" target="lib\sl40" />
    <file src="**\*.cs" target="src" />
</files>

См. также