Visual Studio 2012如何调试“无法将项目x添加到引用中”的错误?

10
在Visual Studio 2012中的一个空白的新类库中,我试图添加对解决方案中现有项目的引用,也是一个类库MonoGame.Framework.Windows8(https://github.com/mono/MonoGame),但是出现了以下错误:

无法添加对项目MonoGame.Framework.Windows8的引用

我已经成功构建了现有的库MonoGame,并将其设置为新库的依赖项。问题可能是什么?(非常烦人的是错误消息没有给出原因!)

1
你可以尝试使用msbuild(从Visual Studio命令提示符中)。 - Manish Basantani
我不熟悉MSBuild - 我可能需要手动编辑.csproj文件,首先添加对其他项目的引用? - markmnl
4个回答

11
尝试添加已构建的dll作为引用时,出现了一个更明确的错误信息,这解决了我的问题。它说:
“无法添加对‘x’的引用。该项目针对‘.NetFramework’,而文件引用针对‘.NetCore’。这不是受支持的场景。”
MonoGame类库是类库(Windows Store应用程序)类型!(括号中的部分很重要!可以推测,Windows Store应用程序类型使用的是与.Net Framework不同的.Net Core)。因此,为了使其正常工作,您的项目必须是类库(Windows Store应用程序),可在添加新项目的Windows Store选项下找到。

一直针对这个问题苦恼,它隐藏得相当隐蔽!谢谢! - NibblyPig

7
我怀疑问题与项目选项中的“目标框架”有关。当您为Android开发时,我不知道MonoGame在Windows 8上是如何工作的,但是目标框架选项是不同版本的Android [例如Android 2.2(Froyo)]。当您创建常规类库时,可以在.NET框架或Mono的不同版本之间进行选择[例如Mono / .NET 4.0]。
不幸的是,这些框架彼此不兼容。您无法将Android的项目引用添加到.NET框架类库中,反之亦然。
解决方案是使用便携式类库。它们专门设计用于解决此问题。缺点是你只能访问你选择要定位的最低公分母提供的子集程序集。
您还可以考虑使用链接文件在项目之间共享代码。这可能会使维护变得有些棘手,但是可以让您更好地控制应编译到便携式类库中但不适合的目标框架的代码。以下是相关问题: Mono多目标项目中的项目引用与文件链接 一旦您了解了这里发生了什么,所有这些的关键在于如何构建您的解决方案。只要小心一点,您就可以在不同平台之间共享几乎所有代码。

2
可能是因为两个项目使用了不同的框架版本,如果在两个项目的属性部分更改框架版本,则可能可以解决您的问题。

1

我想这里也有同样的问题:

答案是:

你要添加什么引用?Metro风格的应用只能添加其他Metro风格类库或可移植类库的引用。


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