【问题标题】:Loading wrong assemblies on non-dev machines?在非开发机器上加载错误的程序集?
【发布时间】:2010-10-23 02:14:26
【问题描述】:

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

我有 2 个应用程序。其中一个是 .NET 4 C# 应用程序,另一个是(我认为).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 的完全限定名称在开发/非开发环境中是相同的
  • 在我的 VB 应用程序和 app.config 中,我明确声明了 C# DLL 名称、令牌和版本。
  • 在我的 VB 应用程序中,根据我对这个 DLL 的引用,我将“复制本地”和“特定版本”设置为 False
  • 即使将我的基于 C 的 DLL 和 C# DLL 复制到目标计算机,看似错误的引用仍然出现。
  • 即使在新系统上重新加载应用程序...问题本身也会出现。

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

我觉得我对此知之甚少,我看不到其他地方可去。不过,我确实觉得我应该能够在其他机器上重新创建工作环境。

我还能查看什么?

编辑

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

这张图片表示从我机器上的一个 C-DLL 方法返回的值。

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

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

在这一点上,我不知道是什么导致了这种情况发生。没有错误。它在每个人的机器上都像在我自己​​的机器上一样愉快地工作,但我完全相信(可能自己无法看到实际问题)我的开发机器创建/有“某些东西”我无法移动,改变参考资料等。我现在感觉好像我已经用尽了我对此事的有限知识。

哦,最后一件事,DLL 是从 VS2010 环境提供给我的。我明天会有 2010,希望使用普通的 .NET 4 DLL 而不是我要求的 3.5。这是我目前解决这个问题的最后希望,除非我更改 VB 代码。

有什么想法吗?

【问题讨论】:

    标签: dll assemblies reference gac


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-07-13
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多