【问题标题】:ClickOnce DLL issueClickOnce DLL 问题
【发布时间】:2009-10-27 14:14:33
【问题描述】:

我在 VS2008 中开发了一些 C# 插件库,它们与其他人的应用程序一起部署。他们使用 ClickOnce 进行部署,我想我正在尝试做一些非标准的事情。

在安装了应用程序和我的 DLL 的其中一台机器上,我想手动替换我的一些 DLL 以测试修复。

该应用位于 c:\Documents and Settings\testsystem\Local Settings\Apps\2.0\blahblahblah...long nasty path\

我的 DLL 位于该路径下的子目录中。

我的测试人员获取了我的 DLL 并将它们放在该子目录中,但从他发送给我的 Trace 输出中可以看出,实际上正在运行旧版本的 DLL。我让测试人员验证 DLL 是否在子目录中,并且 Trace 日志显示正确的路径,表明应用程序正在从该位置运行,但 Trace 输出不是来自我发送给他的 DLL。

在这一点上,ClickOnce 部署的东西对我来说都是精灵魔法。它似乎没有覆盖我的新 DLL,但它肯定没有运行我期望它运行的版本。有人有什么想法吗?

谢谢, 马特

【问题讨论】:

    标签: c# clickonce


    【解决方案1】:

    你确定你有正确的目录吗?单击一次的目录结构有点复杂,DLL 可以多次复制。它并不总是从您期望的地方拉取 DLL。如果有人曾经将它们放在那里,它也可能会从 GAC 中提取 DLL。

    尝试运行procexp,查找您的应用并检查其持有的句柄。这将告诉您相关 DLL 的正确路径。

    【讨论】:

    • 好点,罗伯特。那是令人沮丧的一天,我已经使用了我的大脑(和我经常使用的 procexp),而不是让情况变得最好……嗯,你知道的。谢谢。
    【解决方案2】:

    在这种情况下,您是否无法使用跟踪 DLL 发布 clickonce 应用程序的更新?这将是在 clickonce 中施展魔法的最简单方法。

    【讨论】:

    • 是的,很遗憾,这不是一个选项。
    【解决方案3】:

    如何简单地安装本地构建的版本(不是点击)。显然,如果您尝试解决权限错误,这对您没有帮助:(。

    但是没有什么可以阻止您在本地系统上将代码作为 exe 运行。

    【讨论】:

      【解决方案4】:

      戴上奇怪的变通方法,你可以:

      • 以不同的名称发布应用并让测试人员安装该版本。

      必须更改的是应用程序的命名空间,但请同时更新 ClickOnce 应用程序名称,否则您将陷入混乱。

      • 以较低的版本号发布应用

      我不得不说我不是 100% 确定这是否会起作用,但是如果您以较低的数字发布它,您的其他客户端不应该获得更新,但测试人员必须卸载然后安装并获取旧的版本。但请注意,您可能希望在测试人员安装测试版本后切换回真实版本,然后测试人员每次启动应用程序时都必须拒绝安装更新。

      我肯定会以不同的名称发布,并且您将拥有一个用于所有测试目的的版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多