Я создаю пакет NuGet для библиотеки классов C #, и я хотел бы включить сгенерированную документацию Xml в библиотеку. Это мой файл NUSPEC:
<?xml version="1.0" encoding="utf-8"?>
<package>
<metadata>
<id>MyLibrary</id>
<version>1.0.0.0</version>
<authors>John Nelson</authors>
<language>en-US</language>
<description>A C# class library</description>
</metadata>
<files>
<file src="..\..\build\MyLibrary.dll" target="lib\Net40" />
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
</files>
</package>
Когда я создаю пакет с помощью этой команды :
nuget pack MyLibrary.nuspec
Выдает ошибку. Если я удалю строку:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
NuGet.exe успешно создает файл nupkg. Я даже могу разархивировать пакет и проверить правильность содержимого. Что я делаю не так? Должен ли XML-файл перейти в другой целевой каталог?
c#
nuget
nuget-package
Джон Нельсон
источник
источник
nuget pack library.csproj
(у меня нет nuspec), но исправление работает так же.Ответы:
Проблема заключалась в том, что я не проверял «Создать XML-документацию» для конфигурации сборки, которую я использовал. Этот Nuspec правильный.
источник
В .NET Core / Standard вы можете сделать это, отредактировав XML-файл проекта, например:
Это выведет документацию в виде файла XML рядом с вашей выходной сборкой.
РЕДАКТИРОВАТЬ: В качестве примечания, как только вы включите,
GenerateDocumentationFile
вы, вероятно, получите множество предупреждений о своих общедоступных методах за то, что не добавили полные теги документации. Если вы хотите отключить эти предупреждения, просто добавьтеPropertyGroup
:источник
<GenerateDocumentationFile>
приводит к<DocumentationFile>
уже, поэтому я думаю, что требуется только один из них, см .: docs.microsoft.com/en-us/dotnet/csharp/codedoc<DocumentationFile>
вы укажете себя, вы просто сможете выводить файл куда угодно. Если вы не укажете его, я думаю, он буквально помещает его в путь, который я указал выше.