【问题标题】:C# Visual Studio: Embed XML Documentation File in AssemblyC# Visual Studio:在程序集中嵌入 XML 文档文件
【发布时间】:2020-06-27 05:15:46
【问题描述】:

我希望将 Visual Studio 生成的自动生成的 XML 文档文件作为嵌入式资源添加到我的项目程序集中,但我不确定如何去做。我知道我可以手动更改 .csproj 文件以添加资源,使用类似:

<EmbeddedResource Include="Path\To\File\MyEmbeddedResource.meta.xml">
    <Link>MyEmbeddedResource.meta.xml</Link>
</EmbeddedResource>

但我不知道它如何与构建过程交互,或者我将为 XML 文件提供什么路径,因为它本身位于构建文件夹中?

我知道我可以使用上面的 sn-p 将任意文件添加为 .dll 的嵌入式资源,但是我如何确保文档文件是最新的,并使用最最近的版本?

这里的总体目标是通过反射访问文档,这样.dll 具有更少的外部文件依赖项。鉴于该项目本身是一个类库,我希望当程序集包含在另一个项目中时,任何答案都不会中断。

【问题讨论】:

    标签: c#


    【解决方案1】:

    嵌入的资源文件不放在构建输出文件夹中,它包含在 DLL 文件的二进制输出中。就像您将定义一个公共常量字符串,其内容是 XML 文件的内容。但是嵌入式资源可以通过https://stackoverflow.com/a/3314213/593045的解决方案访问

    resouceName 取决于您放置 XML 文件的子文件夹以及如何调用它 - 这定义了资源名称。 所以我会使用一个基本文件夹 e。 G。 “embeddedXmlDoc”,并且在其内部具有相同的文件夹结构(命名空间中 . 之间的每个文本的文件夹),例如您要记录的类及其命名空间。然后,您只需使用它们的命名空间和类名就可以找到正确的文件。

    【讨论】:

    • 抱歉,我觉得我说的不够清楚,所以我将其编辑得更准确。问题不在于如何将文件添加为嵌入式资源,我知道该怎么做。问题是如何嵌入自动生成的文档文件,使其始终保持最新,而无需使用先前生成的 XML 再次构建项目。据我所知,无论如何,构建过程都会以正确的顺序发生(因此 XML 文件是在 .dll 之前生成的),但我希望有人可以验证这一点,或者告诉我如何确保它发生在那个订购。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多