【发布时间】:2019-04-22 09:31:48
【问题描述】:
在运行时,我想使用 .NET Core 从 NuGet 库下载最新的 DLL 并将其加载到容器中。
我正在研究一个场景,即一组依赖项已更改并且新的包版本发布到 nuget.org,之后我将不得不下载最新的包并运行一些测试。每次应用程序将验证它是否具有最新的包版本,并在必要时下载并动态加载新程序集,而无需停止应用程序。
【问题讨论】:
-
你知道,如果你的依赖版本改变了——你需要重新编译你的应用程序,对吧?
-
编译后的 dll 版本可能与您机器上的 Net 版本、您机器上的 Windows 版本或您机器上的微处理器不兼容。所以你必须下载源代码并动态编译以确保代码可以在你的机器上运行。
-
假设你有一个类
A,它使用来自B.dll,Version=1.0.0.0的类B。即使您在AppDomain中下载并切换(卸载)B.dll,Version=1.0.0.0到B.dll,Version=2.0.0.0,您的A类仍然希望使用来自B.dll,Version=1.0.0.0的类B。要改变这一点,你需要停止你的应用程序,重新编译它并再次运行。 -
@vasily.sib 这就像说当我还使用 Azure Blob Storage SDK 时使用 Newtonsoft.Json v12.0.1 会失败,因为它是针对 Newtonsoft.Json v10.0.2 编译的。我并不是说按照原始问题的要求去做是个好主意,但您所写的并不是阻止此操作的技术限制。
标签: c# .net-core dependencies nuget runtime