我正在为OSGeo.FDO创建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
文件。虽然它告诉我它已被修改,视觉工作室问我是否要重新加载它。我说我做了,但它没有添加任何东西。
我正在做的事情有问题吗?
答案 0 :(得分:1)
NuGet XML转换可能有点古怪。如果模式允许,则可以使其工作的方法是通过添加属性使每个标记唯一。例如如果你有
<FeatureProviderRegistry>
<FeatureProvider name="OSGeo.PostgreSQL.3.6">
etc...
</FeatureProvider>
</FeatureProviderRegistry>
然后
<FeatureProviderRegistry>
<FeatureProvider name="Other Name">
etc...
</FeatureProvider>
</FeatureProviderRegistry>
然后它应该做你想要的。我意识到这可能不是您想要XML架构的方式,但如果您可以这样做,它可能是一种解决方法。