Создание пакетов символов прежних версий (.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>
См. также
- Создание пакетов символов (.snupkg) — новый рекомендуемый формат для пакетов символов