找不到类型或命名空间

时间:2013-07-25 13:50:22

标签: visual-studio-2012 c#-2.0 msbuild-4.0

我目前正在尝试将Visual Studio 2008中的WiX 3.5自定义操作项目转换为WiX 3.7和Visual Studio 2012,并且我遇到以下异常:

  

无法找到类型或命名空间名称“MyNamespace”(是吗?   缺少using指令或程序集引用?)

明确引用了dll,Visual Studio 2012查看命名空间没有问题。命名空间下的所有内容甚至会在Intellisense中弹出,但是当我构建它时,我得到了这个异常。

任何人都知道这里发生了什么?

其他信息:

我引用的命名空间是.Net 2.0库,自定义操作项目是.Net 2.0项目。

修改

经过进一步调查后,我收到了这个警告,我猜这是问题的根源:

  

主要参考“MyNamespace,Version = 8.5.1.20,Culture = neutral,   PublicKeyToken = f593502af6ee46ae,processorArchitecture = MSIL“不能   解决因为它与.NET间接依赖   框架程序集“mscorlib,Version = 4.0.0.0,Culture = neutral,   PublicKeyToken = b77a5c561934e089“其中包含更高版本”4.0.0.0“   比当前目标框架中的版本“2.0.0.0”。

为什么在这是2.0项目时尝试使用mscorelib 4.0?

3 个答案:

答案 0 :(得分:9)

事实证明,在编译为目标.Net 2.0框架时,正在引用的dll正在使用4.0编译器进行编译。使用3.5编译器切换项目以编译解决了问题。

答案 1 :(得分:0)

这可能完全不相关,但昨天我遇到了类似的问题。我不小心将一个类文件(.cs)从一个解决方案复制到另一个解决方案中。显然,我没有添加对其他解决方案的引用。

答案 2 :(得分:0)

在我们的例子中,虽然引用的dll以.Net 4.0为目标,但它有自己对.Net 4.5.2 dll的引用。引用的4.0框架目标使我们相信4.5或4.5.1足以处理事情,但它们不是 - 引用项目必须是4.5.2来处理dll 及其所有引用< / em>的

这显然是dll制造商的一个错误。