我有基于此自动生成的帮助的MVC 4.0 WebApi项目。
我的模型类存储在解决方案中的另一个项目中。为每个项目启用xml文件的生成(项目属性->构建-> OutPut-> XML文档文件-启用)。
在本地调试中一切正常-xml文件已复制到项目目录,我看到了来自其他项目的字段/类的注释。
但是,当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹。仅复制WebApi主项目中的一个xml文件。所以我看不到其他项目对课程的评论。
Answers:
我有一个类似的问题,对我来说,答案有点“道歉”!时刻。
在项目设置中,我仅在Debug配置下启用了XML文档文件,而在Release下则未启用。我正在使用Release进行部署,因此实际上并未生成XML文档。因此,解决方案是确保为Debug和Release配置启用XML文档。
Show All Files
确保.xml文件是Included In Project
您可以通过两种不同的方式来做到这一点:
1)转到项目属性->选择构建选项->检查“ XML文档文件”->添加路径“ App_data \ XMLDocument.xml”->保存设置,构建项目->包括XMLDocument。 xml文件->选择属性->复制到输出目录->选择“始终复制”
2)转到项目属性->选择“打包/发布Web”选项->要显示的项目->从下拉列表中选择“此项目中的所有文件”
bin
文件夹。xmldocument由其他类库项目生成。不是我发布的网络项目。vs2015中的BTW
我遇到了同样的问题,即仅部署了webapi项目中的xml文件。
要修复它,我必须将此添加到我的Web(Api)项目文件中的第一个PropertyGroup
元素内。
<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>
之后,所有项目的文档xml文件(已启用的地方)都已发布!
$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets
什么。
我能够仅使用发布配置.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>
值得一提的是,这个答案解决了发布时如何从项目目录外部包括文件的问题。
打开您的publishprofile(* .pubxml)并将此代码包含在“ Project”元素中:
<ItemGroup>
<Content Include="bin\yourDocumentationFile.xml">
<CopyToOutputDirectory>true</CopyToOutputDirectory>
</Content>
<!-- Include a content to each documentation file -->
</ItemGroup>
一种方法是将XML文件添加到项目内的“ App_Data ”文件夹中,然后在Visual Studio中,将文件选择为其属性“复制到Ouput目录”以“始终”。
作为上一个答案的补充,还包括另一种类型的标签,如下文所述:
https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files
标签:
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
如果您不希望文档文件转到HelpPageConfig.cs并注释掉
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))