Подтвердить что ты не робот

Как создать пакет NuGet, который включает данные XML intellisense

Эта ссылка Как создать файл XML Intellisense для моей DLL? объясняет, как создавать ваши DLL файлы, чтобы включить XML файл, содержащий все ваши заголовки документации, поэтому что они доступны в этих всплывающих окнах IntelliSense.

В моей компании мы часто распространяем наши собственные DLL с использованием внутреннего источника пакета NuGet. Когда я создаю пакеты NuGet для источника пакета, как я могу обеспечить, чтобы кто-то другой получал DLL из источника пакета, IntelliSense отображает заголовки документации для них?

4b9b3361

Ответ 1

Если вы распространяете свои файлы xml с вашим пакетом NuGet в той же папке, что и ваши DLL, тогда Visual Studio найдет эти файлы xml и покажет intellisense для ваших сборок.

Чтобы перераспределить файлы xml intellisense, вам необходимо добавить их в ваш .nuspec файл, например:

<files>
    <file src="bin\IronPython.dll" target="lib\Net40" />
    <file src="bin\IronPython.xml" target="lib\Net40" />
</files>

Ответ 2

tl; dr файлы документации должны быть .xml not .xml

Мне удалось получить файлы XML, включенные, сначала включив производство, используя вкладку "Сборка", проверив файл документации XML в разделе "Вывод". Примечание: по какой-то причине мне пришлось вручную изменить расширение с .XML на нижний .xml. YMMV. Это то же самое, что и вопрос, на который вы ссылались, Как создать файл XML Intellisense для моей DLL?.

Сделав это, я создал файл Nuspec в каталоге проекта. Здесь образец, вы также можете сгенерировать его с помощью nuget spec MyAssembly.dll, но обязательно отредактируйте его и соответствующим образом установите значения.

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>1.0.0</version>
    <title>Title for your package</title>
    <authors>Package Author</authors>
    <owners>Package Owner</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>A description of your library</description>
    <releaseNotes>Release notes for this version.</releaseNotes>
    <copyright>Copyright 2013</copyright>
    <tags>tag1 tag2</tags>
  </metadata>
</package>

Как только это было сделано, я использовал Nuget для упаковки. Я должен был указать платформу, потому что я использую 64-битную ОС, но у меня нет никаких целей в проекте для x64, только AnyCPU

nuget pack MyAssembly.csproj -Prop Configuration=Release;Platform=AnyCPU -build

Сборка и связанная с ней документация были автоматически включены в пакет. Кроме того, в список зависимостей добавляются все пакеты, которые вы использовали в своем проекте.

Подробнее см. http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package.