ClickOnce DLL问题

时间:2009-02-10 20:31:24

标签: c# clickonce

我在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,但它肯定没有运行我期望它运行的版本。有人有什么想法吗?

谢谢, 马特

4 个答案:

答案 0 :(得分:2)

您确定拥有正确的目录吗? click-once目录结构有点复杂,DLL可以多次复制。它并不总是从您期望的位置拉出DLL。如果有人曾经把它们放在那里,它也可以从GAC中提取DLL。

尝试运行procexp,查找您的应用并检查它所拥有的句柄。这将告诉你正确的DLL路径。

答案 1 :(得分:0)

在这种情况下,发布跟踪DLL的clickonce应用程序的更新是不可能的吗?这将是在clickonce中进行魔术的最简单方法。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

戴上奇怪的解决方法,你可以:

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

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

  • 使用较低版本号发布应用

我不得不说我不是百分百确定这是否可行,但是如果你用较低的号码发布它,你的其他客户端不应该得到更新,但测试人员必须卸载然后安装并获得旧的版。但要注意,在测试人员安装测试版之后,您需要切换回真实版本,然后测试人员必须拒绝在每次启动应用程序时安装更新。

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