gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:32:38 25 4
gpt4 key购买 nike

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

我有 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 名称、 token 和版本。
  • 在我的 VB 应用程序中,根据我对这个 DLL 的引用,我将“本地复制”和“特定版本”设置为 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 更新。我已经从两个环境中删除了项目中使用的所有 3rd 方 DLL,并将它们重新加载到这两个环境中。

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

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

    有任何想法吗?

    最佳答案

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

    关于dll - 在非开发机器上加载错误的程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4002105/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com