Asp.net webapi publish - xml files not copy
У меня есть проект MVA 4.0 WebApi с автоматической сгенерированной справкой на основе этого.
Мои классы моделей хранят в моем решении другие проекты. Генерация xml файла разрешена для каждого проекта (Project Properties → Build → OutPut → Файл документации XML - Включено).
В локальном отладке все файлы ok - xml копируются в каталог проекта, и я вижу комментарии для полей/классов из других проектов.
Но когда я использую публикацию профиля (в папку), файлы xml не копируются в выходную папку. Скопирован только один xml файл из основного проекта WebApi. Поэтому я не вижу комментариев к классам из других проектов.
Ответы
Ответ 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_Datastrong > внутри проекта, а затем внутри визуальной студии выбрать файл для его свойства " Копировать в каталог 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")))