Asp.net mvc 4 asp.net webapi发布-xml文件未复制

Asp.net mvc 4 asp.net webapi发布-xml文件未复制,asp.net-mvc-4,asp.net-web-api,msbuild,publish-profiles,Asp.net Mvc 4,Asp.net Web Api,Msbuild,Publish Profiles,我有一个带有自动生成帮助的MVC4.0WebAPI项目 我的模型类存储在我的解决方案中的其他项目中。为每个项目启用xml文件的生成(项目属性->构建->输出->xml文档文件-启用) 在本地调试中,一切正常-xml文件被复制到项目目录,我看到来自其他项目的字段/类的注释 但当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹。只复制了主WebApi项目中的一个xml文件。因此,我看不到其他项目中对类的注释。一种方法是将XML文件添加到项目中的“App\u Data”文件夹中,然后在

我有一个带有自动生成帮助的MVC4.0WebAPI项目

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

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


但当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹。只复制了主WebApi项目中的一个xml文件。因此,我看不到其他项目中对类的注释。

一种方法是将XML文件添加到项目中的“App\u Data”文件夹中,然后在visual studio中,选择一个文件到其属性“复制到输出目录”到“始终

您可以通过两种不同的方式执行此操作:

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


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

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


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

我只需在发布配置文件
.pubxml
文件中使用自定义MSBuild目标即可解决此问题。按照以下步骤操作

最终结果是,此MSBuild目标将所有
.xml
文件从Web API的bin文件夹复制到您要发布的bin文件夹。无需将这些文件复制到
App\u Data

1) 从
[项目文件夹]\Properties\PublishProfiles
打开相应的
.publishxml
文件

2) 在
标记中添加此代码段:

<CopyAllFilesToSingleFolderForPackageDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>

自定义文件;
$(将所有文件复制到SingleFolderForpPackageDependson);
自定义文件;
$(将所有文件复制到SingleFoldPerformesDeploydependson);
3) 在
标记后添加此代码段:

<CopyAllFilesToSingleFolderForPackageDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>

bin\%(文件名)%(扩展名)

应归功于发布时如何包含项目目录之外的文件。

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

<ExcludeApp_Data>False</ExcludeApp_Data>
False
XML文件的属性可以设置为: 构建行动内容, 复制到输出目录-始终


但是,如果在发布配置文件中将上述参数设置为True,则永远不会发布XML文件。通过艰苦的学习了解到这一点。

补充前面的答案,还有另一种类型的标签需要包含,如下文所示:

标签:


自定义文件;
$(将所有文件复制到SingleFoldPerformesDeploydependson);
打开您的publishprofile(*.pubxml),并将此代码包含在“项目”元素中:


真的

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

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

<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>
false

在此之后,所有项目的文档xml文件(在启用该文件的地方)已发布

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


config.SetDocumentationProvider(新的XmlDocumentationProvider(HttpContext.Current.Server.MapPath(“~/App\u Data/XmlDocument.xml”))
您可以更改现有条件:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU' OR '$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>ProjectName.xml</DocumentationFile>
</PropertyGroup>

ProjectName.xml

我是否正确理解应该手动将xml文件复制到Api项目,并在每次注释/代码更改后重复该文件?否,在visual studio中,右键单击app_数据文件夹,然后选择“添加现有项”。接下来,选择输出XML文件以将其添加到项目中。最后,将copy to Output目录设置为always。您确实不想使用“copy always”。只需将它们设置为键入“内容”。如果您设置“始终复制”,您将在bin目录下获得额外的复制App_数据。这没有任何意义。xml文件是在构建过程中生成的。它们不是项目的一部分。说明:如果您在两个项目中都执行了第1)点,那么在/bin/App_数据文件夹下的主API项目中,您将复制两个xml文档。您确实不想使用“始终复制”。只需将它们设置为键入“内容”。如果设置“始终复制”,您将在bin目录下得到一个额外的复制App_数据。第二种方法对我不可用。无法将xml_文档文件复制到
bin
文件夹。xmldocument由其他类库项目生成。不是我在VS2015中发布的web项目。顺便说一句,不幸的是,此解决方案不适用于web部署。请关闭。归功于Ivan和他的链接。您还需要添加一个重复的xml节点“CopyAllFilesToSingleFolderForPackageDependsOn”,标记为“CopyAllFilesToSingleFolderPerformsDeploydDependsOn”,这样MsDeploy也可以工作。回答不错,但即使启用了发布此选项,该文件仍存在于bin/Release文件夹中,但是“发布”不会复制文件。同时单击“显示所有文件”确保.xml文件包含在项目中我必须添加此属性并执行
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU' OR '$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>ProjectName.xml</DocumentationFile>
</PropertyGroup>