我们正在开发.NET 3.5应用程序(Windows窗体),它由3个主要部分组成。
作为部署过程的一部分,我们希望能够在安装后不断更新组件。
我一直在考虑设置NuGet服务器,并将组件更新打包为NuGet包。
以前有人做过这样的事吗?你认为NuGet适合这份工作吗?
我们的要求是:
我们正在使用TeamCity进行持续集成和构建我们的产品,我知道它与NuGet很好地集成,可以直接创建/发布NuGet包。
问题是我如何将NuGet与我们的应用程序集成?是否有任何客户端NuGet代码来使用包?我想知道这是否可以解决。
答案 0 :(得分:8)
1和3)可以使用NuGet.Core从NuGet部署和接收数据。检查NuGet push... to Windows Azure和source code以查看NuGet.exe的Update -Self命令。
我们还在即将发布的NuGet书中介绍了这种情况 - Pro NuGet。
2)托管您自己的Feed非常简单,请访问www.myget.org或使用NuGet gallery
答案 1 :(得分:4)
派对有点晚,但我开发了一个开源框架,可以完全满足要求。
它被称为Sidewinder(http://sidewinder.codeplex.com) - 使用它的最佳方式是通过它的NuGet包(http://nuget.org/packages/sidewinder)。
基本上,您在应用程序的开头添加一小段代码,并且响尾蛇组件将检查提要(官方或自定义)以获取所需包的更新,将其拉下并将其解压缩到临时文件夹。然后它将您的应用程序备份到zip,启动sidewinder.exe(将完成安装)并将控制权返回给您的应用程序,指示它应该在更新待处理时终止。应用程序关闭后,sidewinder.exe会将更新后的内容从temp文件夹复制到您的应用程序文件夹中,如果您在nuget包中包含readme.txt,甚至会为您提供这样的内容。
答案 2 :(得分:2)
我认为可能,我在自己开发的项目中做了类似的事情。我不认为它是'弯曲的nuget',只要你使用私人饲料并且不试图将这些包推到公共nuget饲料。 Nuget可以处理关于程序集的依赖关系A需要程序集B才能运行,但是对于动态加载/卸载,您必须考虑使用Managed Extensibility Framework来自动加载新模块。
Nuget的客户端代码名为Nuget.Core,它是Visual Studio中Nuget PowerShell窗口中用于下载软件包的内容。它可用于执行您描述的功能,下载新软件包并将其放置在您的应用所期望的位置。
如果你正在寻找一些例子,谷歌搜索可以找到一些,但直接想到的是OctopusDeploy,这是一个围绕nuget构建的应用程序部署框架。