在非开发机器上加载错误的程序集?

时间:2010-10-23 02:14:27

标签: dll assemblies reference gac

我认为我属于一个常见的类别,“它在我的开发环境中完美运行,但在其他任何地方我都会得到奇怪的结果”,而且对于我所有的努力,我只会更加困惑。

我有2个申请。其中一个是.NET 4 C#app,另一个是(我认为).NET 3.5 VB。 C#应用程序创建了一个DLL,暂时,我有一个用3.5编译的这个DLL的版本,以便我可以在我的VB应用程序中使用它。我有VB应用程序的源代码,但不是C#应用程序。我从来没有在我的机器上编译C#应用程序。

在此DLL中,它引用基于C的库。 (我觉得这是问题。)

在我的开发环境中,我可以在我的VB应用程序中使用此DLL而不会出现任何问题。但是,当我在另一台机器上尝试此设置时,它就好像与嵌入式基于C的DLL相关的位不是最新版本。

  • gacutil确认C#DLL不是来自GAC
  • FUSLOGVW确认引用的C#DLL的完全限定名在dev / non-dev环境中是相同的
  • 在我的VB应用程序中,在我的app.config中,我显式声明了C#DLL名称,标记和版本。
  • 在我的VB应用程序中,在我对此DLL的引用中,我将“Copy Local”和“Specific Version”设置为False
  • 即使将基于C的DLL和C#DLL复制到目标计算机,仍然会出现看似错误的引用。
  • 甚至在新系统上重新加载应用程序......问题就出现了。

这不是我得到任何错误。 VB应用程序仍然正常运行。 VB应用程序正在实例化并使用该C#DLL(其中包含C DLL),我可以看到VB应用程序的不一致似乎是C DLL的问题。我从来没有在我的机器上使用C#应用程序的源代码,所以我不知道为什么它在我自己的工作上很好,但在其他任何地方都没有。

我觉得我已经达到了我对此所知甚少的结果,我也看不到其他任何事情要去。我确实觉得我应该可以在其他机器上重新创建一个工作环境。

我还能看到什么?

修改

我想我可能会添加一些更具体的信息,希望它能带来解决方案。目前,我已经更新了VB代码以使用不同的值。

此图片表示从我的计算机上的某个C-DLL方法返回的值。 alt text

一切看起来都应该如此。然后我将我的DLL和可执行文件带到新机器上,运行它,这些相同的项目显示为:

alt text

我已经多次检查了GAC。我已经茫然地看着加载的组件日志几个小时,只注意在两个环境中都加载了相同的(正确的)DLL。我确保在两台机器上安装相同的各种MS更新。我已从项目中使用的两个环境中删除了所有第三方DLL,并将它们重新加载到这两个DLL中。

此时,我不知道导致这种情况发生的原因。没有错误。它在每个人的机器上都像我自己一样快乐地工作,但我完全相信(可能是因为无法看到实际问题)我的开发机器创建/有“某些东西”我没有移动,改变了我刚才觉得我已经用尽了对此事的有限知识。

哦,最后一件事,DLL是从VS2010环境提供给我的。我明天将有2010年,并希望使用正常的.NET 4 DLL而不是我要求的3.5。这是我修改这个问题的最后希望,而不是我改变VB代码。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

很抱歉,如果我错过了一些内容,但您考虑过,它可能只是格式设置,而不是不同的结果? 从您的示例中,我只能看到以两种不同格式显示的相同结果(一种具有两个固定小数位,另一种仅显示相关数字)。 如果您在代码中检查顶部值== 2.0,那么它应该在所有计算机上都是真的,如果是这样 - DLL在所有计算机上返回相同的值,它们只是以不同的方式显示(可能计算机区域设置不同?)< / p>