2013-07-29 54 views
0

ProjectA.csproj包含如此定义的XSD架构:C# - 编译xml模式到DLL?

<?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> 

与ItaXmlConfigFileSchemaV1.xsd包括作为嵌入的资源项目A会被编译成ProjectA.dll。

然后,创建ProjectB.csproj,并在它我包括与下面的头一个XMLFile1.xml:

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

</utilityConfigData> 

项目B引用ProjectA.dll。

当我将ProjectA.csproj添加到ProjectB解决方案中,并在XML编辑器中打开XMLFile1时,Visual Studio 2010在XMLFile1.xml的XML编辑器中为我提供了所有可用的自动补全/验证内容。

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

有什么办法可以使这些功能只使用对DLL的引用?

+0

当您选择了xml文件时,您可以通过属性指向模式。然后你会有智能感知。我认为你不能仅仅通过引用dll就可以做到这一点。 –

回答

1

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