我有MVC 4.0 WebApi项目,带有自动生成的帮助based on this。
我的模型类将其存储在我的解决方案中的另一个项目中。为每个项目启用xml文件的生成(项目属性 - >构建 - > OutPut - > XML文档文件 - 已启用)。
在本地调试中,一切正常 - 将xml文件复制到项目目录,我看到来自其他项目的字段/类的注释。
但是当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹。仅复制主WebApi项目中的一个xml文件。所以我没有看到其他项目的课程评论。
答案 0 :(得分:159)
我有一个类似的问题,对我来说,答案有点像" doh!"时刻。
在项目设置中,我只在Debug配置下启用了XML文档文件,而不是在Release下。我正在使用Release进行部署,因此实际上并没有生成XML文档。因此,修复程序确保为调试和发布配置启用XML文档。
答案 1 :(得分:41)
你可以通过两种不同的方式来做到这一点:
1)转到您的项目属性 - >选择构建选项 - >检查" XML文档文件" - >添加路径" App_data \ XMLDocument.xml" - >保存设置, 建立你的项目 - >包含您的XMLDocument.xml文件 - >选择属性 - >复制到输出目录 - >选择"始终复制"
2)转到您的项目属性 - >选择"打包/发布网络"选项 - >要显示的项目 - >选择"此项目中的所有文件"从下拉列表
答案 2 :(得分:23)
我能够使用发布配置文件.pubxml文件中的自定义MSBuild目标来解决此问题。请按照以下步骤操作。最终结果是此MSBuild目标将所有.xml文件从Web API的bin文件夹复制到您要发布的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>
信用转到this answer,它解决了在发布时如何从项目目录外部包含文件。
答案 3 :(得分:10)
我遇到了同样的问题,即只部署了webapi项目中的xml文件。
要修复它,我必须在第一个public class Publication
{
public List<string> Authors { get; set; }
public string Title { get; set; }
}
class Program
{
static void Main()
{
IEnumerable<Publication> publications; // YOUR DATA HERE!
var groupsByAuthor = publications.SelectMany(publication => publication.Authors.Select(author => new { Publication = publication, Author = author })).GroupBy(x => x.Author);
foreach (var gba in groupsByAuthor)
{
Console.WriteLine(gba.Key);
foreach (var pub in gba)
{
Console.WriteLine(pub.Publication.Title);
}
}
Console.ReadLine();
}
}
元素中将其添加到我的Web(Api)项目文件中。
PropertyGroup
之后,文档所有项目的xml文件(启用它的地方)已发布!
答案 4 :(得分:6)
一种方法是将XML文件添加到项目内的&#34; App_Data &#34;文件夹中,然后在visual studio中选择一个文件到其属性&#34; 复制到输出目录&#34;到&#34; 始终&#34;。
答案 5 :(得分:6)
补充上一个答案,还有另一种类型的标签,如下文所述:
https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files
标签:
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
答案 6 :(得分:4)
打开您的publishprofile(* .pubxml)并将此代码包含在“Project”元素中:
<ItemGroup>
<Content Include="bin\yourDocumentationFile.xml">
<CopyToOutputDirectory>true</CopyToOutputDirectory>
</Content>
<!-- Include a content to each documentation file -->
</ItemGroup>
答案 7 :(得分:0)
如果您的网站使用发布配置文件(例如,如果您从ISP下载了一个),则需要确保将以下选项设置为False
<ExcludeApp_Data>False</ExcludeApp_Data>
XML文件的属性可以设置为: 构建行动 - 内容, 复制到输出目录 - 始终
但如果上述参数在发布配置文件中设置为True,那么您的XML文件将永远不会发布。很难学到这一点。
答案 8 :(得分:0)
如果您不希望文档文件转到HelpPageConfig.cs并注释掉
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))