【发布时间】: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