C#-将xml模式编译到DLL中

本文关键字:DLL 编译 模式 xml C#- | 更新日期: 2023-09-27 18:25:27

ProjectA.csproj包含这样定义的XSD模式:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ItaXmlConfigFileSchemaV1"
    targetNamespace="http://tempuri.org/ItaXmlConfigFileSchemaV1.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/ItaXmlConfigFileSchemaV1.xsd"
    xmlns:mstns="http://tempuri.org/ItaXmlConfigFileSchemaV1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"               
    xmlns:r="http://tempuri.org/ItaXmlConfigFileSchemaV1.xsd"
>
...schema definitions...
</xs:schema>

ProjectA将被编译到ProjectA.dll中,其中包括作为嵌入式资源的ItaXmlConfigFileSchemaV1.xsd。

然后,我创建ProjectB.csproj,并在其中包含一个XMLFile1.xml,其标题如下:

<?xml version="1.0" encoding="utf-8" ?>
<utilityConfigData xmlns="http://tempuri.org/ItaXmlConfigFileSchemaV1.xsd">
</utilityConfigData>

ProjectB引用ProjectA.dll.

当我将ProjectA.csproj添加到ProjectB解决方案中,并在XML编辑器中打开XMLFile1时,VisualStudio2010会在XMLFile1.XML的XML编辑器中为我提供所有漂亮的自动完成/验证功能。

但是,当ProjectB引用没有加载项目源的DLL时,XML编辑器不会提供任何基于架构的自动完成或验证。

是否有任何方法可以仅使用对DLL的引用使这些功能可用?

C#-将xml模式编译到DLL中

我不相信有。VS需要通过文件(或URL)访问架构才能加载它。在您有项目引用的情况下,VS有现成的文件,所以您不必做任何特殊的事情。我发现了很多原因,为什么将XML模式作为普通文件导出作为构建过程的一部分是有意义的。你可能想这么做。