Nuget包缺少接口

时间:2015-01-16 18:56:47

标签: nuget

我已经为一个框架创建了一个包,它依赖于单个解决方案中的众多项目。我想为解决方案中的框架和各种项目创建nuget包。

在Framework.Framework.nuspec中,我声明了以下依赖项:

    <dependencies>
        <group>
            <dependency id="Framework.CompositionRoot" version="1.0" />
            <dependency id="Framework.Services" version="1.0" />
            <dependency id="Framework.Domain" version="1.0" />                              
        </group>
    </dependencies>

在每个项目文件中都有自己的nuspec文件,例如Framework.CompositionRoot.nuspec,它具有以下依赖项:

    <dependencies>
        <group>
            <dependency id="Super.Services" version="1.0" />
            <dependency id="Super.Data" version="1.0" />
            <dependency id="Super.Domain" version="1.0" />                              
        </group>
    </dependencies>

我的问题是,当我在另一个项目中安装Framework.Framework时,它似乎安装了一些依赖的nuget包而不是其他的。在这种情况下,它安装Framework.CompositionRoot和Framework.Services,但不安装Framework.Domain。

Framework.Domain在解决方案中有自己的nuspec文件,生成的Framework.Framework.nupkg文件将Framework.Domain显示为依赖项。我只在项目中安装了Framework.Framework,而不是Framework.Domain,因为根据我的理解,我应该在安装Framework.Framework时安装它。

当我查看解决方案的引用时,它添加了一个Framework.Domain.dll,但是该域中声明的一半接口丢失了。 (我确保缺少的接口被声明为public。)但是,如果我将dll复制/粘贴到lib文件夹并手动引用它,那么所有的接口都在那里。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是因为默认情况下nuget安装旧版本。虽然Framework.Domain在通过包管理器查看时不在已安装包的列表中,但它在packages.config中可见,并且具有不包含接口的旧版本。 (Nuget install将默认安装最低版本的依赖项。)

为了解决这个问题,我卸载了软件包并使用标志重新安装:

-DependencyVersion&#34; HighestPatch&#34;。