我目前正在尝试为此解决方案中的所有项目发布大量 nuget 包。这些项目设置在一个简单的树中,Myre 是基础项目,一切都依赖于它:
Myre <- Myre.Debugging <- Myre.Debugging.UI <- Myre.UI
Myre <- Myre.UI
Myre <- Myre.Entities <- Myre.Graphics
我正在尝试将每个单独的项目打包为一个 nuget 包,并根据需要对其他 Myre 子项目包具有正确的依赖关系。
我的第一步是为Myre制作一个包(过程的nuspec和bat 文件)。这似乎工作得很好,画廊显示 Myre 具有ninject(另一个 nuget 包)依赖项,一切都很好。
当我尝试制作下一个包时,问题就来了。Myre.Debugging依赖于 Myre(带有正常的项目参考),仅此而已。将此 nuspec与nuget pack (详细)一起使用会给出:
Attempting to build package from '(x86) Myre.Debugging.csproj'.
Packing files from 'C:\Long_Path\Myre\Myre.Debugging\bin\x86\Release'.
Add file 'C:\Long_Path\Myre\Myre.Debugging\bin\x86\Release\Myre.Debugging.dll' to package as 'lib\net40-Client\Myre.Debugging.dll'
Add file 'C:\Long_Path\Myre\Myre\bin\x86\Release\Myre.dll' to package as 'lib\net40-Client\Myre.dll'
Add file 'C:\Long_Path\Myre\Myre\bin\x86\Release\Myre.XML' to package as 'lib\net40-Client\Myre.XML'
Found packages.config. Using packages listed as dependencies
Id: Myre.Debugging
Version: 1.0.0.2
Authors: Microsoft
Description: Description
Dependencies: Ninject (= 3.0.1.10)
Added file 'lib\net40-Client\Myre.Debugging.dll'.
Added file 'lib\net40-Client\Myre.dll'.
Added file 'lib\net40-Client\Myre.XML'.
Successfully created package 'C:\Long_Path\Myre\Myre.Debugging\Myre.Debugging.1.0.0.2.nupkg'.
如您所见,它获取了一个 packages.config 文件(可能来自 Myre,因为这里没有),然后它从中确定一个 Ninject 依赖项。如果我希望 Myre.Debugging 和 Myre 成为一个单独的包,那很好。然而,这不是我想要的,我希望 Myre.Debugging 获得对 Myre 包的依赖。
如何设置 nuget 以使用 Myre 作为包引用,而不仅仅是将 Myre 程序集复制到 Myre.Debugging 包中?
编辑:: 我尝试不使用-IncludeReferencedProjects并指定:
<dependencies>
<dependency id="Myre" version="1.0.0.1" />
</dependencies>
但是由于某种原因,这只是创建了一个完全没有依赖关系的包!即使像这样手动指定依赖项确实有效,但也不是很理想。