在VS2010中对3.5项目进行单元测试会产生CS1685警告

5
我正在开发一个针对.NET 3.5的项目。由于公司高层不允许我们使用4.0,所以我别无选择。在Visual Studio 2010中,我向解决方案添加了一个新的测试项目。我发现我只能从测试项目中选择4.0框架(这没关系,因为它不会被部署)。一切都很好,但是我的测试项目出现了编译器警告:
warning CS1685: The predefined type 'System.Action' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Core.dll'
我已经从测试项目中删除了对System.Core的引用,但警告仍然存在。我只能认为这是因为我正在测试的项目是针对3.5版本的,所以有些东西被搞混了。是否有一种干净的方式来消除此警告,直到我们获得在应用程序中使用4.0的批准?
1个回答

5
看起来你正在使用MSTest作为单元测试框架。 如果是这样,问题在于MSTest不支持在Visual Studio 2010中向下兼容。 这意味着即使您的测试项目针对3.5版本,它也会加载4.0版本的.Net程序集。 在这种情况下,由于加载了多个System.Core版本,导致发生冲突。
遗憾的是,除了将项目升级到4.0之外,没有其他解决此问题的方法。

有没有什么方法可以抑制这个警告?如果我们能从列表中清除警告,我可以接受这种情况,直到我们升级。它们混乱了列表,并使我们难以识别我们应该解决的合法 CA 警告。 - SonOfPirate
1
@SonOfPirate 你可以通过在相关的 csproj 文件中手动添加 <NoWarn>1685</NoWarn> 元素来压制它们。你需要手动编辑 .csproj 文件来完成此操作。 - JaredPar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接