我已经为一个框架创建了一个包,它依赖于单个解决方案中的众多项目。我想为解决方案中的框架和各种项目创建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文件夹并手动引用它,那么所有的接口都在那里。
任何帮助都将不胜感激。
答案 0 :(得分:0)
这是因为默认情况下nuget安装旧版本。虽然Framework.Domain在通过包管理器查看时不在已安装包的列表中,但它在packages.config中可见,并且具有不包含接口的旧版本。 (Nuget install将默认安装最低版本的依赖项。)
为了解决这个问题,我卸载了软件包并使用标志重新安装:
-DependencyVersion&#34; HighestPatch&#34;。