2011-03-03 114 views
5

我有一个针对.NET 3.5的开发项目。我没有选择这个,因为企业大佬们不会让我们瞄准4.0。我在Visual Studio 2010中的解决方案中添加了一个新的测试项目。我发现我只能从测试项目(这没关系,因为没有部署)定位到4.0 Framework。VS2010中的单元测试3.5项目会产生CS1685警告

一切都很好,只是我从我的测试项目中获得的编译器警告:

警告CS1685:预定义类型“System.Action”在全球的别名多个组件定义;使用定义从'c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Core.dll'

我从测试项目中删除了对System.Core的引用,警告仍然存在发生。我只能假设这是因为我正在测试的项目是以3.5为目标的,所以有些东西正在越过。在我们获得批准在我们的应用中定位4.0之后,是否有一种清除方法可以消除此警告?

回答

5

这听起来像你正在使用MSTest作为你的单元测试框架。如果是这样,问题在于MSTest不支持在Visual Studio 2010中关闭定向。这意味着即使您的测试目标为3.5,它也会加载4.0版本的.Net程序集。这会导致由于在此方案中加载的多个版本的System.Core而导致的冲突。

很遗憾,除了将项目升级到4.0以外,没有办法解决此问题。

+0

任何方法来压制警告?我可以接受这种情况,直到我们升级,如果我们可以从列表中获得警告。他们正在混淆名单,并且难以确定我们应该处理的合法CA警告。 – SonOfPirate 2011-03-03 18:50:21

+1

@SonOfPirate您应该能够通过手动将''元素添加到相关的csproj文件中来禁止它们。您需要手动编辑.csproj文件才能执行此操作。 – JaredPar 2011-03-03 18:53:49

+0

这个伎俩! – SonOfPirate 2011-03-03 19:26:09