关于c#:Moles引用.NET 3.5项目中的.NET 4程序集?

Moles References a .NET 4 Assembly in a .NET 3.5 Project?

我在Visual Studio 2010中使用Moles,并且一直工作得很好。然而,在这种情况下,摩尔不会起作用。mscorlib.behaviors程序集引用.NET 4程序集,即使该项目设置为.NET 3.5(完整)配置文件。

我有一个最初内置于.NET 4的解决方案,使用的是Visual Studio 2010。所需的程序集(system.serviceprocess;system.configuration.install)仅与.NET 4客户端配置文件一起使用。测试项目只能是.NET 4(完整)配置文件,因此不兼容。因此,我将目标项目和测试项目的框架配置文件都更改为.NET 3.5(完整),因为此配置文件中允许使用这些程序集。

以下是编译器警告:

The primary reference
"mscorlib.Behaviors, Version=0.94.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35,
processorArchitecture=MSIL" could not
be resolved because it has an indirect
dependency on the .NET Framework
assembly"mscorlib, Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=b77a5c561934e089" which
has a higher version"4.0.0.0" than
the version"2.0.0.0" in the current
target framework.

是否有某种方法可以强制Moles坚持.NET 3.5,而不必将应用程序移植到Visual Studio 2008?我真的,真的不想那样做。

更新:

我认为这是同一个问题:我是唯一一个获得"在当前目标框架中不可用的程序集"的人吗?


这个问题的部分答案是,我是唯一一个获得"程序集在当前目标框架中不可用"的人吗?具体的解决方案仍然存在残余问题。然而,自从报告这个问题以来,新的解决方案并没有出现问题。


我不确定这是否是同一个问题,但每当我选择"系统"引用的"添加moles程序集"时,我都会将"system.behaviors"程序集添加到"moleassemblies"文件夹中。然后,当我从我的项目中删除system.moles时,system.behavior.dll文件从未从"moleassemblies"文件夹中删除,并导致生成服务器问题(与您看到的类似)。即使我试图从项目的引用中移除System.Behaviors引用,每次我构建该项目时,它都会回来。

解决方案是确保从项目中删除所有对System.Behavior的引用,同时删除MolesAssemblies\System.Behaviors.dll。在构建项目之后,引用将不再出现。

也许自从您切换到.NET 3.5之后,这个原始的.NET 4.0 System.Behaviors.dll仍然存在并导致了这些问题。尝试删除它(您的moles引用系统程序集),然后再次为系统程序集添加moles程序集。