从 Xamarin Forms PCL 中删除 ios、windows8 和 wp8 - nuget 3.0 选择加入错误?

Remove ios, windows8, and wp8 from Xamarin Forms PCL - nuget 3.0 opt-into error?

我正在处理 Xamarin Forms 项目。我想定位 Android 和 Windows 10 UWP。

当我尝试通过从中删除 "Windows 8"、"Windows Phone Silverlight 8"、"Windows Phone 8.1"、"Xamarin.ios" 和 "Xamarin.ios (classic)" 来清理 PCL 时PCL 目标,我得到以下讨厌的...

我真的只是想删除 WP8,因为我不关心它的定位。

The project's targets cannot be changed. The selected targets require the project to opt-into NuGet 3.0 support, however, Visual Studio cannot automatically do this for you. Please uninstall all NuGet packages and try again.

如何让项目选择加入 NuGet 3.0? 我还应该尝试其他方法吗?

环境:Xamarin 表单,VS2015

谢谢....

根据对原始问题的评论,有几条可能的路线;一种方法是尝试从项目中删除所有包,并在再次 re-adding 之前进行必要的更改。

如果您的问题是那些选项在解决方案中无处不在,您可以在解决方案资源管理器中简单地 select 那些您不想显示的选项,然后右键单击并单击 "Unload Project"。他们会留在那里增加项目规模,但他们会离开部署列表和其他地方。

对我有用的解决方案:

卸载Xamarin.Forms:

Right Click Solution -> Manage NuGet Packages -> Uninstall Xamarin.Forms -> Restart VS

然后删除构建平台:

Right Click Solution -> Properties -> Build -> under Targeting select Change -> Remove platform(s) -> Restart VS

重新安装 Xamarin.Forms:

Manage NuGet packages -> Search for Xamarin.Forms -> Install -> Restart VS

对于我的初始原型,我不想在其他平台上浪费时间;所以:

  1. 我开始了一个新的解决方案 - "Blank App (Xamarin Forms Portable)"
  2. 我使用 PackageManager 从所有项目中删除了所有包
  3. 我更改了项目目标以排除任何 Windows 移动应用程序(它想保留 Windows 8.1;我认为这是我想要的 .NET 包含)
  4. 我删除了 3 个 Windows 个项目
  5. 我使用 PackageManager 将 "Xamarin.Forms" 读取到所有剩余的项目 - 它会自动添加启动时存在的所有其他包

现在我的解决方案仅(真正)针对 Android 和 iOS ....

对我来说,这是解决问题的方法: 查看该目标项目中的 packages.config 文件,并卸载所有已安装的软件包。然后您就可以更改目标。然后重新安装您的软件包。

禁用其中一个构建的最佳方法是在解决方案资源管理器中,右键单击您不想包含的构建,例如 Windows 或 WinPhone,然后单击卸载项目。然后该构建将更改为 (unavailable)

另一种可能的解决方案是临时重命名 packages.config,将 PCL 设置更改为新的目标平台,然后再次将 packages.config 的名称更改回来。这在我使用 VS 2015 的项目中对我有用。不能相信这个解决方案,一段时间前在博客上阅读它并在此处 post 阅读它以防它对某人有帮助。如果我再次看到这篇博客文章,我会 post 这里 link。

None 以上解决了我的问题并且卸载 nuget 包或编辑项目文件不是解决方案(至少对我来说 - 谈论参考地狱)但这种方法确实有效:

首先,如果不取消选中 .NET Framework,则无法删除单个目标平台,例如 win8、silverlight 或 asp.net 核心。

当您取消选中 Windows 8 和 ASP.NET Core 时,也取消选中 .NET Framework。不要担心,它不会出现上述错误消息,但 VS 会自动重新检查 .NET Framework(通常是较低版本),然后在完成后重新添加 Window 8.1,然后删除其他的。

一旦发生这种情况,您就可以随后删除其他人。这花了我一段时间才弄清楚,因为它在其他任何地方都不明显也没有解释。您不需要卸载 Xamarin.Forms.