我有一个 .NET 4.0 中的 WPF 解决方案,其中包括一个单元测试项目,该项目测试 ViewModel 中使用的不同命令。一切都工作正常,但后来我安装了 .NET 4.5 和 VS2012。
现在,当我尝试构建解决方案时,我收到错误消息,例如 -
SomeProject.UsersViewModel_Accessor.AddUserToAccountsCommand' 不是 语言支持
我注意到并尝试了以下方法 -
1。参考
UnitTestFramework.dll
:UnitTestFramework.dll
是从-引用的
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\
现在更改为从 -
引用C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0
所以,现在从 VS2012 目录中获取引用。我手动将该引用恢复到之前的状态。但没有运气。
2。组装
ICommand
:AddUserToAccountsCommand
是一个 ICommand
对象,在 .NET 4.0 中它驻留在 PresentationCore.dll
中。然而,在 .NET 4.5 中,它位于 System.dll
中。所以我也检查了这些参考资料,但它们看起来不错,就像以前一样。
3.测试目标的实例化:
该错误消息仅在测试目标被创建为访问器时显示,例如
UsersViewModel_Accessor
,但在直接实例化时不会显示。这意味着虽然以下代码会生成错误 -
UsersViewModel_Accessor target = new UsersViewModel_Accessor();
Assert.IsTrue(target.AddUserToAccountsCommand.CanExecute(null), "Failed to perform can exetuce of add user command");
target.AddUserToAccountsCommand.Execute(null);
以下代码不-
UsersViewModel target = new UsersViewModel();
Assert.IsTrue(target.AddUserToAccountsCommand.CanExecute(null), "Failed to perform can exetuce of add user command");
target.AddUserToAccountsCommand.Execute(null);
那么,有人可以分享一下这个问题到底是什么原因以及如何解决吗?
编辑:
开始出现错误后我还安装了VS2010 SP1。还是没有运气。
编辑2:
在同一台机器上,我也需要使用 VS2012 来进行其他项目。所以卸载.NET 4.5/VS2012并不是一个解决方案。
为了检查一下,我在另一台机器上采用了该解决方案,仅安装了.NET 4.5,而不是VS2012,并尝试构建。但同样的故事。因此,该问题与 VS2012 无关,而是 .NET 4.0 和 .NET 4.5 之间的冲突。为了反映这一点,我将更改问题的标题。
您面临的问题是已知问题。安装.NET 4.5和VS2012后,单元测试项目无法构建。以下是您可能已经注意到的一些事情:
1-UnitTestFramework.dll的引用:安装VS2012后UnitTestFramework.dll的引用路径发生变化。
2- ICommand 的程序集: ICommand 对象驻留在 .NET 4.0 和 .NET 4.51 中的不同程序集中。
3- 测试目标的实例化: 仅当测试目标创建为访问器时才会出现错误消息。
该问题似乎是 .NET 4.0 和 .NET 4.5 之间的冲突。您可能需要考虑将项目更新到较新版本的 .NET 或寻找适合您特定需求的解决方法。如果您使用的是 Visual Studio,请确保您拥有 xUnit 和 Microsoft.NET.Test.Sdk 的最新包。如果问题仍然存在,请考虑在开发者论坛上或向可能遇到类似问题的同事寻求帮助。
另请参阅此链接。