【发布时间】:2016-04-08 12:40:21
【问题描述】:
对于 Raspberry Pi2 上的 Windows 10 IoT Core 应用程序,我需要使用启动器应用程序或 StartUp-Task,它会创建我的应用程序的卷影副本并启动它。我需要使用这种方法能够在运行时替换 DLL,而无需锁定 DLL 并且不会中断正在运行的服务。这是必需的,因为运行它的设备会在遥不可及的地方,部署在客户的站点上,我需要运行我的应用程序来为设备提供服务。更新我的 DLL 后,我将重新启动它,它将与新库一起运行,将启动器作为默认应用程序启动,然后启动我的应用程序。
在 Windows 10 和 UWP 之前,方法是使用 .NET Framework 中 mscorlib.dll 中的 System.AppDomain 在缓存目录中创建新的 AppDomain。配置、可执行文件和 DLL 将被复制到缓存目录并从那里运行。这使得原始 DLL 可用于替换并且不会锁定它们。这也是 IIS 和 webapps 中使用的一种非常有用的技术,即使代码需要更新,它们也需要不间断地运行。开放式威胁会继续为开放式请求提供服务,直到这些请求完成,并且将使用新的更新版本为新请求提供服务。
现在 Windows 10 System.AppDomain 不再可用。我尝试了 Windows.System.ProcessLauncher,但遇到了几个问题。首先,我必须在注册表中注册 EXE 以允许启动它。然后它告诉我我只能从应用程序容器运行它。到目前为止,我还没有让它工作。恕我直言,这只是一种乏味且混乱的方法。
现在我的问题是:您会使用什么来替代 Windows 10 IoT Core 上所描述的旧方法?有没有人有一个小的示例代码可以分享?或者也许是指向正确方向的链接?任何意见,将不胜感激。
【问题讨论】:
标签: c# .net uwp windows-10-iot-core