警告 CS1684:对类型 X 的引用声称它被定义在..中,但是找不到。

9
当我构建一个测试项目(我们称之为PWTests)时,我收到了以下警告:
警告CS1684:对类型“System.Windows.Input.ICommand”的引用声称它在“c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.dll”中定义,但找不到它。
该项目旨在测试一个类库(我们称之为PW)。我无法确定为什么它认为System.Windows.Input.ICommand是在System.dll中定义的。实际上定义ICommand的PresentationCore已经在测试项目和类库项目中正确引用。我尝试删除对PresentationCore的引用,并进行清理和重新添加(如其他问题所述),但未能解决问题。
我该如何确定是什么导致它认为ICommand在System.dll中?

4
可能是4.0/4.5混淆了。在.NET 4.5中,ICommand被定义在System.dll中。在.NET 4.0中,它被定义在PresentationCore.dll中。 - Foole
2个回答

2

我们确实需要更多信息,但下面是我解决这个问题的方式。

通常情况下,当你通过nuget或类似方式添加了一些东西时,如果你查看你的app.config文件,你会看到一些重定向(可能)检查包含ICommand的程序集(通常在你的bin文件夹中或直接引用),确保其中的版本相同。

如果您发布您的app.config并说明您正在使用的程序集,那将有助于我更加准确。


0
以下注释可能与此无关,但当我引用使用VB.NET创建的DLL时,我遇到了这个错误。VB.NET不区分大小写,因此在项目设置中命名空间可能是小写的,而在源代码中则是大写的。编译器会感到困惑。在这种情况下,只需检查大小写问题并进行修复即可。

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