令人沮丧的,荒谬的汇编参考错误

时间:2011-01-06 22:59:45

标签: c# visual-studio-2010 reference assemblies

我最近在一个像样的大小的库上完成了一个(希望成功的)VB到C#的转换。但是,在尝试构建它时,我从编译器收到一些麻烦。我创建了一个名为ExtensionMethods的小助手库,编译它,将.dll放在外围项目的bin文件夹中,并在新转换的库中添加了对它的引用。该库有两个名称空间ExtensionMethods.JsonExtensionMethods.Enums。在我想使用Enums命名空间的任何类中,我使用using ExtensionMethods.Enums导入它。我对.Json命名空间做了同样的事情(顺便说一句,它工作正常)。

以下是正在发生的事情的图片证据:

alt text

请注意Enums下的蓝色波浪形,并同时提出来自Intellisense的Enums建议。以下是VS实际识别程序集的证明(.ToInt()是扩展方法的名称):

alt text

注意Intellisense如何将.ToInt()作为扩展方法建议并且在其下面没有波浪形,即使是异议......

alt text (三个文件使用此命名空间)

除了......之外有意义。

alt text

基本上,这就是说,“是的,Jason,你已正确引用所有程序集,是的,你的程序集包含它们应该的名称空间,但不,我今天不想编译。”

我只想编译并完成这个怪物。我在这里缺少什么?

更新

ExtensionMethods.JsonExtensionMethods中的另一个命名空间在引用时工作正常,并且不会产生程序集引用错误。这两个项目都是在同一台64位机器上创建的,所有项目都以.NET 4为目标。

3 个答案:

答案 0 :(得分:1)

所以这就是我修复它的方法。基本上我从bin文件夹中删除了.DLL,删除了对它的每一个引用,重新放入.DLL,并重新引用了所有内容。现在,由于一些奇怪的原因,编译问题已经消失。耶。

答案 1 :(得分:0)

当我遇到64位与32位的问题时,我依稀记得这样的事情。确保项目平台可以使用该引用。如果我没记错的话,我在一个64位平台上为“任何CPU”编译的项目中引用了一个32位DLL,或者类似的东西,这是不久前的。

答案 2 :(得分:0)

解决这个问题的唯一方法我发现当我遇到同样的问题时,会发现所有相关代码,删除引用,重新构建所有内容,再次添加引用并取消注释代码,重新构建。

注意:重新构建,而不是构建......只是重新添加引用并没有帮助

似乎构建器获得了无效的部分构建或某些东西(不知道它在技术上如何工作),即使你告诉它重新构建它也不会覆盖。您需要摆脱所有代码和引用,并重新构建以摆脱无效状态。

(是的,我知道,这是很多工作而且很糟糕,但这是我发现摆脱它的唯一方法)