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