2011-02-24 175 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