0

我在 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

4 回答 4

2

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

尝试运行procexp,查找您的应用程序并检查它持有的句柄。这将告诉您有问题的 DLL 的正确路径。

于 2009-02-10T22:06:27.157 回答
0

在这种情况下,使用跟踪 DLL 发布对 clickonce 应用程序的更新对您来说是不可能的吗?这将是在 clickonce 中施展魔法的最简单方法。

于 2009-02-10T20:34:09.297 回答
0

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

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

于 2009-02-10T20:48:08.933 回答
0

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

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

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

或者

  • 发布版本号较低的应用

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

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

于 2009-10-27T06:14:33.983 回答