【问题标题】:Unable to find assembly A_class, Version 2.0.0.0, Culture=neutral, PublicKeyToken=null找不到程序集 A_class,版本 2.0.0.0,Culture=neutral,PublicKeyToken=null
【发布时间】:2012-03-13 22:54:27
【问题描述】:

我正在尝试从 VS2005 升级项目。它是一个 VB.NET 项目 B,它依赖于引用 C++ dll A.dll 的 C# 项目。我收到一条错误消息,提示“无法找到程序集 A_class,版本 2.0.0.0,Culture=neutral,PublicKeyToken=null”。 C++ 项目的目标平台是 4.0,由于该项目依赖于其他项目,因此我无法对其进行降级。但我确实将 VB.NET 项目的平台设置为 4.0。版本 2.0.0.0 还指的是什么?我尝试创建一个全新的项目,并在成功构建后将 vb 表单添加到其中。 C++ dll 位于输出目录中,如果 VB 项目在那里找不到它,它就不会到达这一点。在构建期间。我要么没有错误(但没有加载表单),要么得到 2 个错误(每个表单一个):

error MSB3103: Invalid Resx file. Could not load file or assembly 'A-class, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. Line 136, position 5.

请帮帮我,给我一个建议,我不知道在哪里找。非常感谢。

【问题讨论】:

    标签: vb.net visual-studio-2010 upgrade assembly-references cpu-architecture


    【解决方案1】:

    “试图加载格式不正确的程序”

    99% 的时间这意味着您正在尝试使用 64 位工具加载 32 位程序集,反之亦然。错误消息中的版本号仅表示它尝试加载的程序集的版本号;它与目标.NET 版本无关。在这种情况下,资源编译器似乎有问题。

    尝试将您的解决方案配置为显式构建 x86 而不是 Any CPU,看看是否能解决您的问题。

    【讨论】:

    • 它在 x86 中构建 - 我需要它在 x64 中构建,并且代码中似乎没有任何需要 x86 的内容。至于依赖项,它们在 x64 中构建良好,我使用 Dependency Walker 验证了 dll。
    • 这是项目依赖还是文件依赖? AFAIK 当您将引用直接添加到文件时,您不能在架构之间来回切换,而不是通过项目引用(架构甚至嵌入到引用中。)
    • 我不明白这个问题 - 虽然我认为如果我这样做了,我将非常接近解决这个问题。 VB 项目有两个使用 UserControl 构建的表单,并且在 UserControl 中有对来自 C# 项目的命名空间的引用,该项目是 c++ dll 的包装器。此外,UserControl 和其中一个表单都使用来自另一个 VB 项目的命名空间 - 构建完美,并且其控件显示在工具箱中。主项目中的 UserControl 似乎构建得很好,但它只显示在 x86 的工具箱中(而不是 x64)。
    • 这两个表单在设计模式下不显示(它们给出了一个关于无法识别使用控件构建的对象的错误) - 但我可以构建项目 - 大多数时候。当我不能时得到的错误是在其中一种形式上:它讨厌从设法将控件放置在工具箱中的项目的导入(并且当然被设置为参考)。我作弊了,从那个表单中删除了代码,删除了资源文件的数据内容,然后将内容放回了表单中——现在我可以构建了。
    • 因此,除非我尝试查看表格,否则我很好 - 但我不确定这个项目将如何作为其他项目的参考 - 我将它构建为一个类 - 如果它不会在后续构建中中断。而且...我必须能够为 x64 构建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2017-02-14
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多