4

我正在为 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文件。尽管它告诉我它已被修改,并且 Visual Studio 询问我是否要重新加载它。我说我有,但它并没有增加任何东西。

我在做什么有问题吗?

4

1 回答 1

1

NuGet XML 转换可能有点古怪。如果架构允许,您可以使其工作的方法是通过添加属性使每个标签唯一。例如,如果你有

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

接着

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

然后它应该做你想做的事。我意识到这可能不是您想要的 XML 模式的方式,但如果您能做到这一点,它可能是一种解决方法。

于 2011-02-25T19:25:36.237 回答