1

我想从VS2005升级项目。这是一个VB.NET项目B,它依赖于引用C++ dll,A.dll的C#项目。我收到一个错误,说'无法找到程序集A_class,版本2.0.0.0,文化=中立,PublicKeyToken = null'。 C++项目的目标平台是4.0,由于该项目依赖于其他项目,因此我无法降级它。但我确实将VB.NET项目的平台设置为4.0。 Version 2.0.0.0还提到了什么?我试图创建一个全新的项目,并在创建成功后将vb表单添加到该项目中。 C++ dll位于输出目录中,如果VB项目在那里没有找到它,它就不会到达这一点。在构建期间。我不是没有错误(但形式不加载),或者我得到2个错误(每一个表格):无法找到程序集A_class,版本2.0.0.0,文化=中性,PublicKeyToken =空

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. 

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

回答

2

“试图加载程序格式不正确”的,这意味着你要加载使用组件64位工具,或者反之亦然一个32位的时间

99%。错误消息中的版本号仅表示它试图加载的程序集的版本号;它与.NET版本无关。在这种情况下,似乎资源编译器是有问题的。

尝试配置您的解决方案,明确地构建x86而不是任何CPU,看看是否能解决您的问题。

+0

它构建在x86中 - 我需要它在x64中构建,并且在需要x86的代码中似乎没有任何东西。至于依赖关系,它们在x64中构建得很好,我用Dependency Walker验证了这些dll。 – Thalia 2012-03-23 21:45:05

+0

这是一个项目依赖项还是一个文件依赖项? AFAIK当你直接向文件添加引用时,你不能在体系结构之间来回切换,而不是通过项目引用(该体系结构甚至嵌入到引用中)。 – 2012-03-29 01:57:01

+0

我不明白这个问题 - 尽管我想想如果我做了,我会非常接近解决这个问题。 VB项目有两个使用UserControl构建的窗体,并且在UserControl中有一个来自C++项目的命名空间的引用,它是C++ dll的封装器。此外,UserControl和其中一个表单都使用另一个VB项目的名称空间 - 完美地构建,其控件显示在工具箱中。主项目的UserControl似乎很好,但它只在x86中的工具箱中显示(不在x64中)。 – Thalia 2012-03-29 22:29:34

相关问题