4

我目前正在尝试将 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 Framework 程序集“mscorlib,Version=4.0.0.0,Culture =neutral,PublicKeyToken=b77a5c561934e089”,其版本“4.0.0.0”高于当前目标框架中的“2.0.0.0”版本。

当这是一个 2.0 项目时,为什么要尝试使用 mscorelib 4.0?

4

3 回答 3

9

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

于 2013-07-31T12:57:50.017 回答
0

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

于 2015-04-26T11:47:48.433 回答
0

在我们的例子中,虽然引用的 dll 以 .Net 4.0 为目标,但它有自己对 .Net 4.5.2 dll 的引用。引用的 4.0 框架目标使我们相信 4.5 或 4.5.1 足以处理事情,但事实并非如此——引用项目必须是 4.5.2 才能处理 dll及其所有引用

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

于 2016-01-12T01:43:49.017 回答