Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# ClickOnce部署应用程序的Prism体系结构注意事项_C#_.net_Wpf_Clickonce_Prism - Fatal编程技术网

C# ClickOnce部署应用程序的Prism体系结构注意事项

C# ClickOnce部署应用程序的Prism体系结构注意事项,c#,.net,wpf,clickonce,prism,C#,.net,Wpf,Clickonce,Prism,我正在使用Prism和ClickOnce创建一个新的应用程序,但在测试ClickOnce的哈希检查是否只检查增量更新时,我注意到我需要进行一些架构更改,以充分利用ClickOnce更新 要明确的是,我正在部署到互联网连接不良的机器上,我真的希望以最小的带宽发布小型、快速的更新。理想情况下,只有经过修改的模块才能通过线路发送 首先,我注意到客户端应用程序项目的散列(生成.exe的散列)总是被更改,并且总是被重新下载。这使我删除了Shell.xaml、ShellViewModel.cs和一些Reso

我正在使用Prism和ClickOnce创建一个新的应用程序,但在测试ClickOnce的哈希检查是否只检查增量更新时,我注意到我需要进行一些架构更改,以充分利用ClickOnce更新

要明确的是,我正在部署到互联网连接不良的机器上,我真的希望以最小的带宽发布小型、快速的更新。理想情况下,只有经过修改的模块才能通过线路发送

首先,我注意到客户端应用程序项目的散列(生成.exe的散列)总是被更改,并且总是被重新下载。这使我删除了Shell.xaml、ShellViewModel.cs和一些ResourceDictionary,并将它们移动到一个新的ShellModule中。这就留下了AggregateModuleCatalog、Bootstrapper、App.xaml和App.cs;每个文件都很小,所以这很好

其次,我注意到ClickOnce的编程更新可以进入一个模块,所以我在AutoUpdateModule中使用了它

最后,我最关心的是基础设施项目。每个模块直接引用基础结构,如果基础结构被修改,所有模块都会得到新的哈希值。我相信这意味着,即使我在基础设施内的枚举中添加一行,整个应用程序也会被重新下载


这个问题有一个优雅的解决方案吗?如果您使用ClickOnce部署了Prism应用程序,那么还有哪些其他架构修改帮助或改进了您的部署?

我不熟悉Prism,但是,在ClickOnce中,无法对标准应用程序应用部分更新

我在大约5年前的一个Windows应用程序项目中也遇到了类似的问题。具体地说,我的用户经常有不稳定的数据连接(有时连接很差的手机数据连接),我需要确保我的更新尽可能小

尽管我可以防止在每次更新后重新下载完整的应用程序,但我确实发现有许多第三方DLL从未更改。因此,我创建了一个单独的安装程序,将这些模块放在Windows GAC中,在安装前提条件时,它们只安装了一次。这将我的应用程序大小从25MB减少到2MB——这是一个很大的改进

我不确定这是否适用于你的情况,但它可能会有所帮助