Как опубликовать sh XML файлы из пакета NuGet в ASP. NET Core 2.1 приложении - PullRequest
0 голосов
/ 02 марта 2020

У меня есть ASP. NET Core 2.1 приложение (скажем, MyWebApiApp), которое ссылается на пакет NuGet (скажем, MyPackage), который содержит модели, используемые в веб-API. Эти модели документируются с использованием XML комментариев, а полученный XML файл публикуется вместе с пакетом NuGet (в lib\netstandard2.0\MyPackage.xml).

Я хочу использовать документацию XML в Swagger, поэтому Я добавляю следующее к моим SwaggerGenOptions в Startup.cs:

c.IncludeXmlComments(Path.ChangeExtension(typeof(MyPackage.MyModel).Assembly.Location, ".xml"));

Пока все хорошо. Когда я запускаю приложение из Visual Studio 2017, оно успешно находит файл документации XML в кэше пакетов NuGet и генерирует документацию Swagger.

Теперь я хочу опубликовать sh веб-сайт. Когда я публикую sh веб-сайт:

  • Файл документации XML для приложения (MyWebApiApp.xml) копируется в папку publi sh (я включил <GenerateDocumentationFile>true</GenerateDocumentationFile> в MyWebApiApp.csproj).
  • Но файл документации XML из моего пакета NuGet (MyPackage.xml) не копируется.

Я пытался добавить заклинание из этот пост от до MyWebApiApp.csproj, без успеха.

1 Ответ

0 голосов
/ 03 марта 2020

Я нашел решение здесь .

Следующее заклинание необходимо добавить в файл pub xml:

<Target Name="_ResolvePublishNuGetPackagePdbsAndXml"
      AfterTargets="RunResolvePublishAssemblies">
  <ItemGroup>
    <ResolvedFileToPublish
      Include="@(ResolvedAssembliesToPublish->'%(RootDir)%(Directory)%(Filename).pdb')"
      RelativePath="$([System.IO.Path]::ChangeExtension(%(ResolvedAssembliesToPublish.DestinationSubPath), '.pdb'))"
      DestinationSubPath="$([System.IO.Path]::ChangeExtension(%(ResolvedAssembliesToPublish.DestinationSubPath), '.pdb'))"
      Condition="'%(ResolvedAssembliesToPublish.PackageName)' != ''
                  and Exists('%(RootDir)%(Directory)%(Filename).pdb')" />
    <ResolvedFileToPublish
      Include="@(ResolvedAssembliesToPublish->'%(RootDir)%(Directory)%(Filename).xml')"
      RelativePath="$([System.IO.Path]::ChangeExtension(%(ResolvedAssembliesToPublish.DestinationSubPath), '.xml'))"
      DestinationSubPath="$([System.IO.Path]::ChangeExtension(%(ResolvedAssembliesToPublish.DestinationSubPath), '.xml'))"
      Condition="'%(ResolvedAssembliesToPublish.PackageName)' != ''
                  and Exists('%(RootDir)%(Directory)%(Filename).xml')" />
  </ItemGroup>
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...