.NET Core 3.0中
<GenerateDocumentationFile>true</GenerateDocumentationFile>
在.csproj文件的PropertyGroup标签中。这是我在 .Net Core 2.2 中需要的步骤:
将以下内容放入Startup.cs中:
public void ConfigureServices(IServiceCollection services)
{
...
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(c =>
{
...
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
});
}
编辑您的.csproj文件并添加/更改这些节点:
<PropertyGroup>
...
<!--
Make sure documentation XML is also included when publishing (not only when testing)
see https://github.com/Azure/service-fabric-issues/issues/190
-->
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
...
<DocumentationFile>bin\$(Configuration)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";//"G2F.Collective.Api.XML"
var commentsFile = Path.Combine(baseDirectory, commentsFileName);
评论文件的名称是通过基础目录和带有项目名称的xml组合来配置的。
c.IncludeXmlComments(commentsFile);
最后,该指令告诉Swagger要使用哪个文件来获取注释,这就是它在该目录中查找该文件的真正原因。
\bin\
目录下,这个答案帮助我弄清楚了这一点。 - undefined好的,我通过指向根目录来使它起作用。
我仍然不知道为什么它无法检测到 bin 目录中的 xml 文件。 同样的操作是在根目录中添加一个 xml 文件可以解决问题。
代码更改:
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
//var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
var commentsFileName = "Comments" + ".XML";
var commentsFile = Path.Combine(baseDirectory, commentsFileName);
c.IncludeXmlComments(commentsFile);
我从微软文档网站上找到以下解决方案。 在“解决方案资源管理器”中右键单击项目,选择编辑 <project_name>.csproj。 在.csproj文件中手动添加突出显示的行:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
var pathIncludeXmlComments = $@"{env.ContentRootPath}\Events.xml";
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Events API", Version = "v0.1" });
c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
c.IncludeXmlComments(pathIncludeXmlComments);
});
pathIncludeXmlComments
”的值,并确认VS2017是否已经将一个.xml文件存储在该位置。Events.xml
)。~/App_Start/SwaggerConfig.cs
是否已添加到你的解决方案中。根据需要进行自定义。我们稍后会处理XML注释行。注意:可能可以完全使用项目的“属性”UI来完成下面的步骤,我不知道,但这是我的过程。
卸载Web API启动项目->打开.csproj文件 在的底部,添加两个内容true和$(NoWarn);1591。这将允许生成XML文档资源,并抑制一个警告,因为您没有对成员进行文档化,可能会影响您的项目。 重新加载项目,打开项目属性UI 进入“生成”->对于您所需的配置,您需要勾选“XML文档文件”。这将默认为~\bin\MyProj.xml作为其目录,所以下一步将假设该路径。 返回SwaggerConfig.cs。查找以c.IncludeXmlComments()开头的行。这是您要添加的内容,再次假设您保留了默认生成的XML路径。string xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "bin", xmlFilename));
https://localhost:xxxxx/swagger
(本地运行,默认)或您自己设置的自定义路径。var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
$"{Assembly.GetExecutingAssembly().GetName().Name}.xml"