XML 文档文件未包含在发布文件夹中
XML Documentation file is not included in publish folder
我在 ASP.NET 核心 MVC 应用程序中选择了“Xml documentation file
”,它显示“bin\Debug\net452\MyProject.xml
”作为输出文件夹。问题是发布文件夹中不存在该文件。我需要一些额外的东西来包括它吗?使用 .NET Core 1.0-RC4 和 VS.NET 2017 RC4(新的 csproject 格式)。
如果您正在使用 project.json
,那么您可以控制发布过程包含和排除的文件和文件夹:
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"appsettings.*.json",
"web.config"
],
"exclude": [
"wwwroot/less"
]
}
对于基于 .csproj
的项目 here is a good resource 用于复制 XML 中的旧 project.json
设置,例如:
<ItemGroup>
<Compile Include="..\Shared\*.cs" Exclude="..\Shared\Not\*.cs" />
<EmbeddedResource Include="..\Shared\*.resx" />
<Content Include="Views\**\*" PackagePath="%(Identity)" />
<None Include="some/path/in/project.txt" Pack="true" PackagePath="in/package.txt" />
<None Include="notes.txt" CopyToOutputDirectory="Always" />
<!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } -->
<Content Include="files\**\*" CopyToPublishDirectory="PreserveNewest" />
<None Include="publishnotes.txt" CopyToPublishDirectory="Always" />
<!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->
</ItemGroup>
project.json
文件应该在 "buildOptions"
下有 "xmlDoc": true
:
{
"buildOptions": {
"xmlDoc": true
}
}
如果您的代码中有这样的文档:
/// <summary>
/// Documentation for FooClass
/// </summary>
public static class FooClass
{
// ...
}
那么您的输出中应该有一个 xml
文件,如下所示:
<doc>
<assembly>
<name>Foo.Bar</name>
</assembly>
<members>
<member name="T:Foo.Bar.FooClass">
<summary>
Documentation for FooClass
</summary>
</member>
</members>
</doc>
显然这没有在 dotnet publish 中实现,但会在不久的将来实现:https://github.com/dotnet/sdk/issues/795
在 1.1.2
上测试
ResolvedFileToPublish
是发布用来知道将哪些文件放入发布文件夹的项目。 Include
是文件的来源,RelativePath
是发布文件夹中应该放置文件的位置。
ComputeFilesToPublis
h 顾名思义——它是收集所有要发布的文件的Target。
<Target Name="CopyDocumentationFile"
AfterTargets="ComputeFilesToPublish">
<ItemGroup>
<ResolvedFileToPublish Include="@(FinalDocFile)"
RelativePath="@(FinalDocFile->'%(Filename)%(Extension)')" />
</ItemGroup>
</Target>
只需将此目标添加到您的 .csproj
并确保
GenerateDocumentationFile
设置为 true
<GenerateDocumentationFile>true</GenerateDocumentationFile>
https://github.com/dotnet/sdk/issues/795#issuecomment-289782712
在 Asp.net Core 中,如果您在设置 DocumentationFile 时遇到问题,我们可以通过在 .csproj 中设置 GenerateDocumentationFile 属性 来实现:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
我在 ASP.NET 核心 MVC 应用程序中选择了“Xml documentation file
”,它显示“bin\Debug\net452\MyProject.xml
”作为输出文件夹。问题是发布文件夹中不存在该文件。我需要一些额外的东西来包括它吗?使用 .NET Core 1.0-RC4 和 VS.NET 2017 RC4(新的 csproject 格式)。
如果您正在使用 project.json
,那么您可以控制发布过程包含和排除的文件和文件夹:
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"appsettings.*.json",
"web.config"
],
"exclude": [
"wwwroot/less"
]
}
对于基于 .csproj
的项目 here is a good resource 用于复制 XML 中的旧 project.json
设置,例如:
<ItemGroup>
<Compile Include="..\Shared\*.cs" Exclude="..\Shared\Not\*.cs" />
<EmbeddedResource Include="..\Shared\*.resx" />
<Content Include="Views\**\*" PackagePath="%(Identity)" />
<None Include="some/path/in/project.txt" Pack="true" PackagePath="in/package.txt" />
<None Include="notes.txt" CopyToOutputDirectory="Always" />
<!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } -->
<Content Include="files\**\*" CopyToPublishDirectory="PreserveNewest" />
<None Include="publishnotes.txt" CopyToPublishDirectory="Always" />
<!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->
</ItemGroup>
project.json
文件应该在 "buildOptions"
下有 "xmlDoc": true
:
{
"buildOptions": {
"xmlDoc": true
}
}
如果您的代码中有这样的文档:
/// <summary>
/// Documentation for FooClass
/// </summary>
public static class FooClass
{
// ...
}
那么您的输出中应该有一个 xml
文件,如下所示:
<doc>
<assembly>
<name>Foo.Bar</name>
</assembly>
<members>
<member name="T:Foo.Bar.FooClass">
<summary>
Documentation for FooClass
</summary>
</member>
</members>
</doc>
显然这没有在 dotnet publish 中实现,但会在不久的将来实现:https://github.com/dotnet/sdk/issues/795
在 1.1.2
上测试ResolvedFileToPublish
是发布用来知道将哪些文件放入发布文件夹的项目。 Include
是文件的来源,RelativePath
是发布文件夹中应该放置文件的位置。
ComputeFilesToPublis
h 顾名思义——它是收集所有要发布的文件的Target。
<Target Name="CopyDocumentationFile"
AfterTargets="ComputeFilesToPublish">
<ItemGroup>
<ResolvedFileToPublish Include="@(FinalDocFile)"
RelativePath="@(FinalDocFile->'%(Filename)%(Extension)')" />
</ItemGroup>
</Target>
只需将此目标添加到您的 .csproj
并确保
GenerateDocumentationFile
设置为 true
<GenerateDocumentationFile>true</GenerateDocumentationFile>
https://github.com/dotnet/sdk/issues/795#issuecomment-289782712
在 Asp.net Core 中,如果您在设置 DocumentationFile 时遇到问题,我们可以通过在 .csproj 中设置 GenerateDocumentationFile 属性 来实现:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>