Nuget包在Visual Studio中无法正常工作

3

我正在编写一个Windows Phone应用程序,一开始使用的是VS 2010 Express for Windows Phone。然后我安装了VS 2012并创建了一个桌面应用程序,使用RestSharp消费JSON / REST服务。由于Express版本不支持插件,我获得了完整的VS 2010 Ultimate并安装了Nuget。当我创建一个win phone库项目并添加RestSharp包时,它会显示在引用中,但我无法访问任何其类(并且使用RestSharp被加下划线标示为红色)。此外,当我从“添加引用”中删除并再次添加时,会出现一个不兼容的引用错误窗口:

RestSharp.WindowsPhone, Version=103.2.0.0, Culture=neutral, PublicKeyToken=null" is incompatible with 
Windows Phone 7.1
In order to add it yourself you should to change the project's terget to a compatible framework first.

如果我将目标更改为WP 7.0,则似乎也会出现此问题。是否有人解决过类似的问题?

好的,我已经找到了类似的问题https://dev59.com/mlXTa4cB1Zd3GeqP2YEL,但它并没有解决我的问题。我还在我朋友的电脑上测试过(他之前安装了WP Express,现在也安装了VS 2010 Ultimate),他现在也遇到了同样的问题。 - marcin32
2个回答

5

在我的情况下,这是因为项目文件夹中有一个packages.config文件,但在方案中没有。这就是为什么我无法正确再次添加引用的原因。从物理磁盘中删除此文件,然后重新运行Install-Package命令。现在应该可以正确添加了。


如果您能将其标记为答案,那么其他发现此问题的人会非常感激。 - Paul Devenney
抱歉,这个问题不是我提出的...我已经给你点赞了。 - Phphelp

2
您是否正在使用源代码控制?
如果您还没有设置解决方案来启用包恢复,那么可能会发生这种情况(NuGet文档)。
右键单击“解决方案资源管理器”中的“解决方案”节点,然后选择“启用NuGet包恢复”。
之后,“解决方案资源管理器”将包含更多项目,并添加一个名为“packages”的新文件夹,该文件夹已自动添加到解决方案文件夹中。您需要将此文件夹添加到您的版本控制中,因为它将包含您安装的NuGet包。
就是这样。
如果您想了解更多信息,请参阅以下详细信息(自动)为您执行的操作:
它添加了一个名为“.nuget”的解决方案文件夹,其中包含NuGet.exe和一个NuGet.targets MsBuild文件。它还更改了解决方案中的每个项目,以导入NuGet.targets MsBuild任务。
有了这个,任何时候编译项目,构建任务都会查看每个项目的packages.config文件,并针对该文件中的每个包,确保相应的包存在于packages文件夹中。对于任何缺少的包,构建任务将下载并解压缩该包。
在还原场景中,当还原包时,NuGet将获取完全匹配的版本。它不会执行任何升级。
此外,如果您已安装最新的NuGet版本,现在将在“工具->选项...->包管理器->常规->允许NuGet在构建期间下载缺少的包”下找到一个新选项,我建议您也使用。
名称已经说明了一切。如果解决方案配置为使用某个NuGet包但该包尚未安装在您的开发计算机上,则NuGet将在您进行下一次构建时自动为您下载该包。

不,实际上我们在这个项目中还没有使用源代码控制。老实说,我为了解决这个问题挣扎了几个小时,试了各种疯狂的方法在VS中,最后某个时刻它开始工作了。我真的不知道发生了什么变化,明天我可能会在我的同事电脑上检查一下。我记得最后做了几次清理和重建。无论如何,问题几乎解决了,我相信这是一个VS2010的错误。 - marcin32

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