我有 MVC 4.0 WebApi 项目与自动生成的帮助 基于这个。
我的模型类将它存储在解决方案中的另一个项目中。为每个项目启用 XML 文件的生成(项目属性-> 构建-> 输出-> XML 文档文件-启用)。
在本地调试中,所有的 ok-xml 文件都被复制到项目目录中,我看到了来自其他项目的字段/类的注释。
但是当我使用发布配置文件(到文件夹)时,xml 文件不会复制到输出文件夹。只复制来自主 WebApi 项目的一个 xml 文件。所以我没有看到其他项目对类的评论。
一种方法是将 XML 文件添加到项目内的“ App _ Data”文件夹中,然后在可视化工作室中,选择一个文件到其属性“ 复制到输出目录”到“ 一向如此”。
你可以用两种不同的方法来做:
1)转到你的项目属性—— > 选择构建选项—— > 检查“ XML 文档文件”—— > 添加路径“ App _ data XMLDocument.XML”—— > 保存设置, 构建您的项目—— > 包含您的 XMLDocument.xml 文件—— > select property —— > Copy to output 目录—— > select“ Copy always”
2)转到你的项目属性—— > 选择“ Package/Publish Web”选项—— > 要显示的项目—— > 从下拉菜单中选择“ all files in this project”
我也遇到过类似的问题,对我来说,答案有点像“哦!”时刻。
在项目设置中,我只在 Debug 配置下启用了 XML 文档文件,而没有在 Release 下启用。我是用 Release 部署的,所以 XML 文档实际上并没有生成。因此,修复工作是确保为 Debug 和 Release 配置启用 XML 文档。
我能够仅使用发布配置文件 .pubxml中的自定义 MSBuild 目标来解决这个问题。按照下面的步骤。
.pubxml
最终结果是,此 MSBuild 目标将把所有 .xml文件从 Web API 的 bin 文件夹复制到要发布的 bin 文件夹。无需将这些文件复制到 App_Data。
.xml
App_Data
1)从 [Project Folder]\Properties\PublishProfiles开启适当的 .pubxml档案。
[Project Folder]\Properties\PublishProfiles
2)在 <Project><PropertyGroup>标签中添加以下代码片段:
<Project><PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> <CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn>
3)在 <PropertyGroup>标签后面添加这个片段:
<PropertyGroup>
<Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="bin\*.xml" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>
这要归功于 这个答案,它解决了在发布时如何包含来自项目目录外的文件的问题。
如果您的站点正在使用发布配置文件(例如,如果您从 ISP 下载了一个发布配置文件) ,您需要确保以下选项设置为 False
<ExcludeApp_Data>False</ExcludeApp_Data>
XML 文件的属性可以设置为: 建立行动-内容, 复制到输出目录-始终如此
但是如果上面的参数在发布配置文件中设置为 True,那么您的 XML 文件将永远不会被发布。我可是吃了不少苦头才知道的。
作为对前一个答案的补充,还有另一种类型的标签需要包括,如下文所示:
Https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files
标签:
<CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn>
打开您的 Publishprofile (* . pubxml)并将此代码包含到“ Project”元素中:
<ItemGroup> <Content Include="bin\yourDocumentationFile.xml"> <CopyToOutputDirectory>true</CopyToOutputDirectory> </Content> <!-- Include a content to each documentation file --> </ItemGroup>
我遇到了同样的问题,只部署了 webapi 项目中的 xml 文件。
为了解决这个问题,我必须将它添加到我的 Web (Api)项目文件中的第一个 PropertyGroup元素中。
PropertyGroup
<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>
之后,文档 所有项目的 xml 文件(启用它的地方)已经是 出版!
如果您不想要文档文件,请转到 helppageconfig.cs 并注释掉
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))
你可以更改现有条件:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU' OR '$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <DocumentationFile>ProjectName.xml</DocumentationFile> </PropertyGroup>