2011-02-24 176 views
4

我正在为OSGeo.FDO创建nuget包,我遇到以下问题。Nuget包中的转换文件问题

FDO使用一个providers.xml文件列出它可以使用的所有提供程序。所以,我创建了一个主呼包OSGeo.FDO包含以下内容:

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<FeatureProviderRegistry/> 

然后,我创建一个NuGet包的每个供应商。在他们每个人包括我用providers.xml.transform,例如,下列:

<FeatureProviderRegistry> 
    <FeatureProvider> 
     <Name>OSGeo.PostgreSQL.3.6</Name> 
     <DisplayName>OSGeo FDO Provider for PostgreSQL/PostGIS</DisplayName> 
     <Description>Read/write access to PostgreSQL/PostGIS-based data store. Supports spatial data types and spatial query operations.</Description> 
     <IsManaged>False</IsManaged> 
     <Version>3.6.0.4707</Version> 
     <FeatureDataObjectsVersion>3.6.0.4707</FeatureDataObjectsVersion> 
     <LibraryPath>.\PostgreSQLProvider.dll</LibraryPath> 
    </FeatureProvider> 
</FeatureProviderRegistry> 

当我安装一个提供者包,它按预期工作,但一旦我安装了一个又一个,它只是不改变根本就是providers.xml文件。虽然它告诉我它已被修改,并且Visual Studio问我是否要重新加载它。我说我这样做,但它没有增加任何东西。

我在做什么有什么问题?

回答

1

NuGet XML转换可能有点古怪。如果模式允许,可以使其工作的方式是通过添加属性来使每个标记具有唯一性。例如如果你有

<FeatureProviderRegistry> 
    <FeatureProvider name="OSGeo.PostgreSQL.3.6"> 
     etc... 
    </FeatureProvider> 
</FeatureProviderRegistry> 

然后

<FeatureProviderRegistry> 
    <FeatureProvider name="Other Name"> 
     etc... 
    </FeatureProvider> 
</FeatureProviderRegistry> 

那么就应该做你想要什么。我意识到这可能不是您想要XML模式的方式,但是如果您可以这样做,那可能是一种解决方法。

+0

谢谢大卫的回答。它适用于我,但在某些情况下可能确实存在问题。 – 2011-02-28 11:04:43