假设我有一个 Windows 窗体应用程序,其中包含一些重要且需要保持最新的 Nuget 包。
是否可以从非开发环境以编程方式更新 Nuget 包?对于非开发环境,我的意思是运行 WinForms 应用程序的随机用户(将其安装在他们的电脑上)。
我已经阅读了一些关于 usingnuget.exe
的内容,但是更新 nuget 包应该会导致 .dll 文件被放置在安装文件夹中。
假设我有一个 Windows 窗体应用程序,其中包含一些重要且需要保持最新的 Nuget 包。
是否可以从非开发环境以编程方式更新 Nuget 包?对于非开发环境,我的意思是运行 WinForms 应用程序的随机用户(将其安装在他们的电脑上)。
我已经阅读了一些关于 usingnuget.exe
的内容,但是更新 nuget 包应该会导致 .dll 文件被放置在安装文件夹中。
你可以这样做,但你不应该这样做。NuGet 包是开发依赖项,并不意味着在已编译的应用程序或客户站点中任意更新,因为
话虽如此,不要这样做。相反,遵循负责任的软件开发周期,在交付之前更新软件包并测试您的应用程序,并为您的客户提供整个应用程序的频繁更新。
不过,出于教育目的,您可以在本示例中使用Nuget CLI工具在本地安装包nuget.exe
。您需要指定包标识符、输出目录和框架,例如net472
.NET Franmework 4.7.2。这会将内容以及包本身提取到与您的目标目录结构不匹配的包文件夹结构中的输出文件夹中。从那里,您需要将您需要的资产复制到您的安装目录中,例如使用复制脚本。除了不是正确的做法之外,这非常麻烦并且很可能被认为是失败的。
nuget install <PackageId> -OutputDirectory <OutputDirectory> -Framework <Framework>
如果是自动更新,那就想想老版本的dll是否支持某些方法,而新版本已经将其删除。
尽管您可以在构建时更新软件包。
通过选择“工具”>“选项”>“NuGet 包管理器”,然后在“包还原”下选择“在 Visual Studio 中构建期间自动检查丢失的包”,启用自动包还原。