0

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 时,Visual Studio 2010 在 XMLFile1.xml 的 XML 编辑器中为我提供了所有不错的自动完成/验证内容。

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

有什么方法可以仅使用对 DLL 的引用来使这些功能可用?

4

1 回答 1

1

我不相信有。VS 需要通过文件(或 URL)访问模式才能加载它。如果您有项目引用,VS 可以随时使用该文件,因此您不必做任何特别的事情。我找到了很多原因,为什么在构建过程中将 XML 模式导出为纯文件是有意义的。你可能想这样做。

于 2013-07-29T15:46:42.483 回答