【问题标题】:Why are there duplicate assemblies in my ClickOnce deployment?为什么我的 ClickOnce 部署中有重复的程序集?
【发布时间】:2010-01-07 18:16:30
【问题描述】:

我想知道为什么我的 ClickOnce 部署在安装后驻留在客户端上的多个文件夹中包含相同的 .dll。我假设它是因为相同的程序集被部署的 2 个不同的程序集引用。

这让我想到了下一个问题: 1.) 为什么?将文件放在那里两次似乎是一种浪费 2.) 最重要的是:文件是在 ClickOnce 安装期间下载了两次,还是在下载后只是复制到 2 个位置?我可以忍受后者,即使它是一种浪费。

谢谢,我希望有人能给我一些见解,我很惊讶找到这方面的信息有多难。

编辑

在完全清除我的 2.0 缓存文件夹后,新安装的 ClickOnce 应用程序会产生以下内容(例如)

C:\Documents and Settings\schmoopy\Local Settings\Apps\2.0\G57TKZ28.WP3\156X8 QYO.XDZ\comp..p282_0000000000000000_0003.003e_485502fc487b00ff\CrystalDecisions。 共享.dll C:\Documents and Settings\schmoopy\Local Settings\Apps\2.0\G57TKZ28.WP3\156X8 QYO.XDZ\crys..ared_692fbea5521e1304_000c.0000_none_badb756f818b0fe2\CrystalDecis ions.Shared.dll

完成...

它们是同一个版本的.dll

【问题讨论】:

  • 对不起 - 显然我回答了错误的问题 - 我相应地删除了我的答案,因为它没有帮助。我没有意识到你的意思是客户端上有多个副本。
  • 太酷了,感谢您抽出宝贵的时间这样做:-)
  • 这是部署了多个版本的应用程序的结果吗?存储多个 dll 的目录结构是什么样的?
  • 尼克,我更新了我的帖子以回答 - 相同版本的 .dll,目录结构如上图所示 - :-)

标签: .net clickonce


【解决方案1】:

没有运气,我一直在努力寻找相同的答案。我的假设(没有事实支持这一点,但似乎是一个合乎逻辑的猜测)是因为它如何影子复制文件。 ClickOnce 安装程序由应用程序进程启动,因此文件被复制到正在运行的进程中。

【讨论】:

  • 这很有意义,因为您还可以在应用程序运行时检查应用程序的更新版本。如果您没有将 dll 复制到单独的文件夹中,那么您在复制锁定的文件时会遇到问题。
【解决方案2】:

在下载应用程序时运行Fiddler 会显示文件是否被多次下载。 Fiddler 真是太棒了。我每天都使用它,而且它是免费的。

此外,ClickOnce 会在您的计算机上保留当前版本和一个先前版本。也许这就是重复出现的地方。

【讨论】:

  • 哈,很好。我有一段时间没有使用提琴手了,beta2 似乎有一些不错的新工作......谢谢你,我验证了文件确实没有从部署位置下载两次。我给你投票。仍然想知道为什么本地有 2 个程序集副本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 2011-08-02
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多