nuget包中的转换文件问题

时间:2011-02-24 14:43:03

标签: nuget

我正在为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文件。虽然它告诉我它已被修改,视觉工作室问我是否要重新加载它。我说我做了,但它没有添加任何东西。

我正在做的事情有问题吗?

1 个答案:

答案 0 :(得分:1)

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

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

然后

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

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