Ответ 1
Проблема заключалась в том, что я не проверял "Генерировать XML-документацию" для конфигурации сборки, которую я использовал. Этот nuspec правильный.
Я создаю пакет NuGet для библиотеки классов С#, и я хотел бы включить созданную 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 файл перейти в другой целевой каталог?
Проблема заключалась в том, что я не проверял "Генерировать XML-документацию" для конфигурации сборки, которую я использовал. Этот nuspec правильный.
В .NET Core/Standard вы можете сделать это, отредактировав XML файл проекта, например:
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>
Это выведет документацию в виде файла XML рядом с вашей выходной сборкой.