我们目前正在构建包含多个项目的解决方案 .
我们有这样的事情:
- Common
- Logging
- Logging.NLog
- Threading
所以Logging.NLog依赖于Logging,Logging on Common等 .
当我们打包Logging.NLog时,我希望nuget能够发现Loggin和Common dependecies .
此刻,我用Common创建了一个包,然后在Logging中我安装了包Common
install-package Common
但每当我对Common进行修改时,我都必须更新包,它们是由我们的连续集成系统(Hudson)创建的,所以当我们开发时它非常烦人 .
我想简单地有一个项目参考(添加引用 - >项目...),并且nuget无论如何都会发现依赖项 .
有没有办法实现它?
4 回答
计划feature针对此确切方案 .
这显然是这样的:
它显然已经在几天前implemented,但有bugs still being ironed out .
目前的功能允许:
要么
功能请求一直追溯到1.5,但它一直在滑动 . 最近,它收集了足够的质量(请求),计划在Nuget 2.3发布 .
发布计划为"End of April, 2013"固定版本2.3所以请继续关注 .
(目前,最新的Nuget版本是2.2.1) .
目前无法完全按照您的要求进行操作,但以下内容可帮助您简化更新 .
听起来您需要将nuspec文件添加到您的解决方案中 . 类似以下三个文件 . 请注意后两个中的依赖项 . 这些引用与[$ version $]相同的dll版本 . 这意味着当您运行以下命令时,它会更新所有三个,因为依赖项上的方括号需要特定版本的依赖包 .
PM> update-package常见
在Hudson中,您需要使用nuget pack命令(see Nuget command reference)执行这些nuspec文件,并在工件中包含生成的包,并将它们部署到您的本地nuget服务器 . 我会把它留给你 .
您需要做的另一件事是确保所有程序集都获得相同版本的相同版本 . 同样,Hudson可以处理这个问题,或者您可以使用通用的AssemblyInfo文件 .
Common.nuspec
Logging.nuspec
Logging.NLog
我认为Charles意味着他希望NuGet自动将项目引用解析为包依赖项,如果所引用的项目也用于构造NuGet包,对吧?
例:
日志记录设置为生成NuGet包
Logging.Nlog设置为生成NuGet包
Logging.Nlog具有对Logging的项目引用 .
生成的Logging.Nlog包应该依赖于生成的Logging包 .
这也是我一直在寻找的东西,但遗憾的是我发现它目前还没有得到支持 . 它上面有一个work item,计划用于NuGet 1.7,但是还没有关于如何处理它的设计 .
这个帖子有一个很好的建议:NuGet and multiple solutions
基本上,通过自己的发布生命周期,将公共组件分解为自己的解决方案 .