我在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,但它肯定没有运行我期望它运行的版本。有人有什么想法吗?
谢谢, 马特
答案 0 :(得分:2)
您确定拥有正确的目录吗? click-once目录结构有点复杂,DLL可以多次复制。它并不总是从您期望的位置拉出DLL。如果有人曾经把它们放在那里,它也可以从GAC中提取DLL。
尝试运行procexp,查找您的应用并检查它所拥有的句柄。这将告诉你正确的DLL路径。
答案 1 :(得分:0)
在这种情况下,发布跟踪DLL的clickonce应用程序的更新是不可能的吗?这将是在clickonce中进行魔术的最简单方法。
答案 2 :(得分:0)
如何简单地安装本地构建的版本(而非单击)。显然,如果您尝试解决权限错误,这对您没有帮助:(。
但是没有什么可以阻止你在本地系统上运行代码作为exe。
答案 3 :(得分:0)
戴上奇怪的解决方法,你可以:
应用程序的名称空间必须更改,但请更新ClickOnce应用程序名称,否则您将陷入混乱的天堂。
或
我不得不说我不是百分百确定这是否可行,但是如果你用较低的号码发布它,你的其他客户端不应该得到更新,但测试人员必须卸载然后安装并获得旧的版。但要注意,在测试人员安装测试版之后,您需要切换回真实版本,然后测试人员必须拒绝在每次启动应用程序时安装更新。
我肯定会以不同的名称发布,并且您将拥有适用于所有测试目的的版本。