80

我有基于此的自动生成帮助的 MVC 4.0 WebApi 项目。

我的模型类存储在我的解决方案中的另一个项目中。为每个项目启用 xml 文件的生成(项目属性 -> 构建 -> 输出 -> XML 文档文件 - 已启用)。

在本地调试中一切正常 - xml 文件被复制到项目目录,我看到来自另一个项目的字段/类的注释。

但是当我使用发布配置文件(到文件夹)时,xml 文件不会复制到输出文件夹。仅复制主 WebApi 项目中的一个 xml 文件。所以我看不到其他项目对课程的评论。

4

10 回答 10

214

我有一个类似的问题,对我来说,答案有点像“doh!” 片刻。

在项目设置中,我只在 Debug 配置下启用了 XML 文档文件,在 Release 下没有启用。我正在使用 Release 进行部署,因此实际上并没有生成 XML 文档。所以修复是确保为调试和发布配置启用 XML 文档。

于 2016-01-13T21:54:28.893 回答
45

你可以通过两种不同的方式来做到这一点:

1)转到您的项目属性->选择构建选项->检查“XML文档文件”->添加路径“App_data\XMLDocument.xml”->保存设置,构建您的项目->包含您的XMLDocument。 xml 文件 --> 选择属性 --> 复制到输出目录 --> 选择“始终复制”

2)转到您的项目属性->选择“打包/发布Web”选项->要显示的项目->从下拉列表中选择“此项目中的所有文件”

于 2014-05-20T09:38:44.663 回答
31

我遇到了同样的问题,只部署了 webapi 项目中的 xml 文件。

要修复它,我必须将它添加到我的 Web(Api) 项目文件中的第一个PropertyGroup元素中。

<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>

之后,所有项目(已启用)的文档 xml 文件都已发布

于 2018-03-21T17:01:30.787 回答
28

我能够仅使用发布配置.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>

归功于这个答案,它解决了如何在发布时包含来自项目目录之外的文件。

于 2016-05-02T21:09:35.677 回答
8

打开您的发布配置文件 (*.pubxml) 并将此代码包含到“项目”元素中:

<ItemGroup>
    <Content Include="bin\yourDocumentationFile.xml">
        <CopyToOutputDirectory>true</CopyToOutputDirectory>
    </Content>
    <!-- Include a content to each documentation file -->
</ItemGroup>
于 2017-08-02T15:44:13.817 回答
7

一种方法是将 XML 文件添加到项目内的“ App_Data ”文件夹中,然后在 Visual Studio 中,选择一个文件到其属性“复制到输出目录”到“始终”。在此处输入图像描述

于 2014-05-16T00:06:06.290 回答
6

作为上一个答案的补充,还包括另一种类型的标签,如下文所示:

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

标签:

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
于 2016-10-10T21:48:04.547 回答
0

您可以更改现有条件:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU' OR '$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>ProjectName.xml</DocumentationFile>
</PropertyGroup>
于 2021-05-23T04:34:37.683 回答
0

如果您的站点正在使用发布配置文件(例如,如果您从 ISP 下载了一个),您需要确保将以下选项设置为 False

<ExcludeApp_Data>False</ExcludeApp_Data>

XML 文件的属性可以设置为:构建操作 - 内容,复制到输出目录 - 始终

但是,如果在发布配置文件中将上述参数设置为 True,那么您的 XML 文件将永远不会被发布。学到了这个很难。

于 2016-09-14T15:04:30.130 回答
-1

如果您不想要文档文件,请转到 HelpPageConfig.cs 并注释掉

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

于 2018-11-30T18:23:24.733 回答