只保留每个ClickOnce依赖项的一个副本?

时间:2017-03-29 16:34:00

标签: c# clickonce

我发布了一个以DLL形式存在少量依赖关系的ClickOnce应用程序。当我发布初始版本0.0.1时,所有依赖项都会像我期望的那样被复制到部署文件夹中。

如果我进行更新并发布版本0.0.2,所有相同的依赖项(未更改且具有相同的文件哈希)将复制到部署文件夹中的第二个子文件夹中。

文件夹结构如下所示:

deployment/
    MyApplication.application
    setup.exe

    Application Files/
        MyApplication_1_0_0_1/
            Dll_A.dll - Hash: 0x111111111111111
            Dll_B.dll - Hash: 0x222222222222222

        MyApplication_1_0_0_2/
            Dll_A.dll - Hash: 0x111111111111111
            Dll_B.dll - Hash: 0x222222222222222

当它们是同一个文件时,有没有办法只有一个Dll_A.dll / Dll_B.dll副本,如果它们发生变化,只有一个新副本?

我指的是开发人员目录中的目录大小。不是客户端拥有的下载和缓存的大小,因为我理解ClickOnce已经注意尽量减少这一点。

2 个答案:

答案 0 :(得分:1)

我的问题来自对Application Files目录如何运作的误解。

是的,每次都有一个包含相同DLL的新文件夹,但是为了升级工作,您不需要保留其中的所有文件夹。除了最新版本之外,您可以删除所有这些内容并且没有任何不良影响。

即使某人处于版本/错过升级之间,他们也只会在程序更新时提取最新版本。他们不需要他们错过的中间版本。

答案 1 :(得分:0)

我不相信ClickOnce允许那种粒度的控制。

编辑: 发现这一点,它可能有助于你的清理问题。 ClickOnce deployment is leaving multiple versions (yes, more than two)