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

Asp.net webapi publish - xml files not copy

У меня есть проект MVA 4.0 WebApi с автоматической сгенерированной справкой на основе этого.

Мои классы моделей хранят в моем решении другие проекты. Генерация xml файла разрешена для каждого проекта (Project Properties → Build → OutPut → Файл документации XML - Включено).

В локальном отладке все файлы ok - xml копируются в каталог проекта, и я вижу комментарии для полей/классов из других проектов.

Но когда я использую публикацию профиля (в папку), файлы xml не копируются в выходную папку. Скопирован только один xml файл из основного проекта WebApi. Поэтому я не вижу комментариев к классам из других проектов.

4b9b3361

Ответ 1

У меня была аналогичная проблема, потому что для меня ответ был немного "дог!". момент.

В настройках проекта я включил только файл документации XML в настройке Debug, а не в Release. Я развертывал с Release, и поэтому XML-документация фактически не создавалась. Таким образом, исправление позволило включить XML-документацию для конфигураций Debug и Release.

Ответ 2

Вы можете сделать это двумя способами:

1) Перейдите к свойству проекта → выберите вариант сборки → отметьте "Файл документации XML" → добавить путь "App_data\XMLDocument.xml" → сохранить настройки, создать свой проект → включить файл XMLDocument.xml → select property → copy to output directory → выбрать "Copy always"

2) Перейдите в свое свойство проекта → выберите опцию "Пакет/Публикация в Интернете" → элементы для отображения → выберите "все файлы в этом проекте" из раскрывающегося меню

Ответ 3

Я смог решить эту проблему, используя только пользовательскую цель MSBuild в файле профиля публикации .pubxml. Следуйте инструкциям ниже. Конечным результатом является то, что эта цель MSBuild скопирует все XML файлы из папки bin Web API в папку bin, в которой вы публикуете. Нет необходимости копировать эти файлы в App_Data.

1) Откройте соответствующий файл .pubxml в [Project Folder]\Properties\PublishProfiles.

2) Добавьте этот фрагмент в <Project><PropertyGroup>:

<CopyAllFilesToSingleFolderForPackageDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

3) Добавьте этот фрагмент после <PropertyGroup>:

  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="bin\*.xml" />

      <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>

Авторы благодарны этому ответу, в котором говорилось о том, как включать файлы из-за пределов каталога проекта при публикации.

Ответ 4

У меня была та же проблема, что был развернут только XML файл из проекта webapi.

Чтобы исправить это, мне пришлось добавить это в файл проекта Web (Api) в первом элементе PropertyGroup.

<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>

После этого, документация XML файлы всех проектов (где он включен) были опубликованы!

Ответ 5

Один из способов заключается в том, чтобы добавить файлы XML в папку App_Data​​strong > внутри проекта, а затем внутри визуальной студии выбрать файл для его свойства " Копировать в каталог Ouput strong > " to " Всегда". enter image description here

Ответ 6

В дополнение к предыдущему ответу, есть еще один тип тега, который должен включать в себя следующую статью:

https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files

Тег:

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>

Ответ 7

Откройте файл publishprofile (*.pubxml) и включите этот код в элемент "Проект":

<ItemGroup>
    <Content Include="bin\yourDocumentationFile.xml">
        <CopyToOutputDirectory>true</CopyToOutputDirectory>
    </Content>
    <!-- Include a content to each documentation file -->
</ItemGroup>

Ответ 8

Если ваш сайт использует профиль публикации (например, если вы загрузили его у своего интернет-провайдера), вам необходимо убедиться, что для этого параметра установлено значение False

<ExcludeApp_Data>False</ExcludeApp_Data>

Свойства файла XML можно установить так: Build Action - Содержание, Копировать в выходной каталог - Всегда

Но если в раскрывающемся профиле параметр выше установлен True, тогда ваш XML файл никогда не будет опубликован. Узнал это трудным способом.

Ответ 9

Если вы не хотите, чтобы файл документации перешел в HelpPageConfig.cs и Comment Out

config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))