3

我正在编写一个 Windows Phone 应用程序,开始使用 VS 2010 Express for windows phone。然后我安装了 VS 2012 并制作了一个桌面应用程序,它使用 RestSharp 使用 JSON/REST 服务。由于 Express 版本不支持插件,我得到了完整的 VS 2010 Ultimate 并安装了 Nuget。当我创建一个 win 手机库项目并添加一个 RestSharp 包时,它会显示在 References 中,但我无法访问它的任何类(并且使用 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,它也会出现。

有没有人解决过类似的问题?

4

2 回答 2

5

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

于 2012-08-31T09:25:49.327 回答
2

你在使用源代码控制吗?

您可能尚未设置解决方案以启用包还原(NuGet 文档)。

右键单击解决方案资源管理器中的解决方案节点,然后选择启用 NuGet 包还原。

之后,解决方案资源管理器将包含更多项目,并且将有一个新文件夹packages自动添加到您的解决方案文件夹中。您将需要将此文件夹添加到您的版本控制中,因为它将包含您已安装的 NuGet 包

而已。

如果您想了解更多信息,以下是有关它(自动)为您做什么的更多详细信息:

它添加了一个名为 .nuget 的解决方案文件夹,其中包含 NuGet.exe 和 NuGet.targets MsBuild 文件。它还更改了解决方案中的每个项目以导入 NuGet.targets MsBuild 任务。

有了这个,任何时候编译项目,构建任务都会查看每个项目的 packages.config 文件,并且对于该文件中的每个包,确保相应的包存在于 packages 文件夹中。对于任何丢失的包,构建任务将下载并解包该包。

在还原方案中,NuGet 将在还原包时获取确切的版本。它不会执行任何升级。

此外,如果您安装了最新的 NuGet 版本,现在将在工具 -> 选项... -> 包管理器 -> 常规 ->允许 NuGet 在构建期间下载丢失的包下找到一个新选项,我也建议使用该选项。

这个名字说明了一切。如果解决方案配置为使用某个 NuGet 包,但该包尚未安装在您的开发计算机上,NuGet 将在您执行下一个build.

于 2012-07-17T15:20:01.170 回答