安装 .NET 4.5 后无法构建单元测试项目

问题描述 投票:0回答:1

我有一个 .NET 4.0 中的 WPF 解决方案,其中包括一个单元测试项目,该项目测试 ViewModel 中使用的不同命令。一切都工作正常,但后来我安装了 .NET 4.5 和 VS2012。

现在,当我尝试构建解决方案时,我收到错误消息,例如 -

SomeProject.UsersViewModel_Accessor.AddUserToAccountsCommand' 不是 语言支持

我注意到并尝试了以下方法 -

1。参考

UnitTestFramework.dll

在安装VS2012之前,
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 之间的冲突。为了反映这一点,我将更改问题的标题。

wpf unit-testing .net-4.5 icommand vs-unit-testing-framework
1个回答
0
投票

您面临的问题是已知问题。安装.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 的最新包。如果问题仍然存在,请考虑在开发者论坛上或向可能遇到类似问题的同事寻求帮助。

另请参阅此链接

© www.soinside.com 2019 - 2024. All rights reserved.