Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NuGet作为应用程序更新机制_C#_.net_Nuget - Fatal编程技术网

C# NuGet作为应用程序更新机制

C# NuGet作为应用程序更新机制,c#,.net,nuget,C#,.net,Nuget,我们正在开发一个.NET3.5应用程序(Windows窗体),它由3个主要部分组成 作为部署过程的一部分,我们希望能够在安装后不断更新组件 我一直在考虑设置一个NuGet服务器,并将组件更新打包为NuGet包 以前有人做过这样的事吗?你认为NuGet适合这份工作吗 我们的要求是: 接收打包的DLL文件(但在包中可能存在其他文件的情况 检测对其他组件(或组件版本)的依赖关系 自动检测新组件版本 我们正在使用TeamCity进行持续集成和构建我们的产品,我知道它与NuGet集成良好,可以直接创建

我们正在开发一个.NET3.5应用程序(Windows窗体),它由3个主要部分组成

作为部署过程的一部分,我们希望能够在安装后不断更新组件

我一直在考虑设置一个NuGet服务器,并将组件更新打包为NuGet包

以前有人做过这样的事吗?你认为NuGet适合这份工作吗

我们的要求是:

  • 接收打包的DLL文件(但在包中可能存在其他文件的情况
  • 检测对其他组件(或组件版本)的依赖关系
  • 自动检测新组件版本
我们正在使用TeamCity进行持续集成和构建我们的产品,我知道它与NuGet集成良好,可以直接创建/发布NuGet软件包


问题是我能将NuGet与我们的应用程序集成到多大程度上?是否有任何客户端NuGet代码来使用软件包?我想这是否可行。

我认为这是可能的,我自己在我开发的一个项目中也做了类似的事情。我不认为它是“弯曲的NuGet”,只要你使用私有提要,不要试图推送这些软件包nuget可以处理与程序集A相关的依赖项,需要程序集B才能正常工作,但对于动态加载/卸载,您必须考虑使用托管扩展性框架之类的工具来自动加载新模块

Nuget有一个名为Nuget.Core的客户端代码,它是Visual Studio中Nuget PowerShell窗口中用于下载软件包的代码。它可以用于执行您描述的功能,下载新软件包并将其放置在应用程序期望的位置

如果你正在寻找一些例子,谷歌搜索可以找到一些,但直接想到的是,这是一个围绕nuget构建的应用程序部署框架。

1和3)使用nuget.Core部署和接收来自nuget的数据是可能的。检查并查找NuGet.exe的Update-Self命令

我们也在即将出版的NuGet书中介绍了这个场景-


2) 托管您自己的提要很容易,请访问www.myget.org或在聚会上晚一点使用

,但我已经开发了一个开源框架,它完全满足了要求

它被称为Sidewinder()——使用它的最佳方式是通过它的NuGet包(http://nuget.org/packages/sidewinder).


基本上,你在应用程序的开头添加了一小段代码,sidewinder组件将检查提要(官方或自定义)以获取所需软件包的更新,将其下拉并解压缩到临时文件夹中。然后,它会将你的应用程序备份到一个zip,启动sidewinder.exe(将完成安装),并将控制权返回给你的应用程序,指示它应该在更新挂起时终止。一旦你的应用程序关闭,sidewinder.exe会将更新的内容从临时文件夹复制到你的应用程序文件夹中,如果你在nuget软件包中包含readme.txt,它甚至会为你提供帮助。

我个人认为你是在试图让nuget偏离其本意。从技术上讲,您可能可以使用Nuget来实现这一点,但有许多其他部署平台旨在部署和维护更适合这一点的应用程序。我同意还有其他平台可以实现这一点。主要的是,我们的构建环境(TeamCity)已经有了一些功能来处理这个问题,只剩下客户端进行更新。为什么你会认为这是弯曲NuGet?我想你可能想看看NuGet图库中的Chocolate。我想完全跳过命令行部分,并将其集成到我自己的.NET中。我认为这是可能的。是的,检查命令行的代码并将其集成到源代码中。