asp.net webapi发布 – xml文件不能复制

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

我的模型类被存储在我的解决scheme中的另一个项目。 为每个项目启用xml文件生成(项目属性 – >生成 – >输出 – > XML文档文件 – 启用)。

在本地debugging一切正常 – XML文件复制到项目目录,我看到来自另一个项目的字段/类的注释。

但是,当我使用发布configuration文件(到文件夹),xml文件不会复制到输出文件夹。 主WebApi项目中只有一个xml文件被复制。 所以我没有看到来自其他项目的类的评论。

我也有类似的问题,对我来说,答案有点“呃”! 时刻。

在项目设置中,我只在Debugconfiguration下启用了XML文档文件,而不是在Release下。 我使用Release进行部署,因此XML文档实际上并没有生成。 因此,修正是确保为Debug和Releaseconfiguration启用XML文档。

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

1)转到你的项目属性 – >select构build选项 – >检查“XML文档文件” – >添加path“App_data \ XMLDocument.xml” – >保存设置,build立你的项目 – >包含你的XMLDocument。 xml文件 – >select属性 – >复制到输出目录 – >select“始终复制”

2)转到你的项目属性 – >select“打包/发布网站”选项 – >要显示的项目 – >从下拉列表中select“该项目中的所有文件”

我能够在发布configuration文件.pubxml文件中使用自定义的MSBuild目标来解决这个问题。 按照下面的步骤。 此MSBuild目标将从Web API的bin文件夹将所有.xml文件复制到您要发布的bin文件夹。 不需要将这些文件复制到App_Data。

1)从[Project Folder] \ Properties \ PublishProfiles中打开相应的.pubxml文件。

2)在<Project><PropertyGroup>标签中添加这个片段:

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

3)在<PropertyGroup>标签之后添加这个片段:

  <Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="bin\*.xml" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target> 

值得一提的是这个答案是解决如何在发布时从项目目录外包含文件。

一种方法是将XML文件添加到项目中的“ App_Data ”文件夹中,然后在Visual Studio中,将其文件“ Copy to Ouput Directory ”select为“ Always ”。 在这里输入图像说明

补充以前的答案,还有其他types的标签,如下面的文章:

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> 

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

 <ExcludeApp_Data>False</ExcludeApp_Data> 

XML文件的属性可以设置为:构build操作 – 内容,复制到输出目录 – 总是

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