【问题标题】:Missing targets in VS 2013VS 2013 中缺少目标
【发布时间】:2015-02-24 00:01:28
【问题描述】:

我正在编译谷歌应用程序 API,但我还没有看到我丢失的地方。

.net 和 windows 8/8.1 都列出了,但没有别的。我在 Windows 7 计算机上运行 VS 2013。

因此,当我进入对项目的引用时,我错过了所有原始的 microsoft 引用(即使我去添加它们,也没有什么可供选择的)。

例如,我得到的错误是:警告 2 主要引用“System.IO”,它是一个框架程序集,无法在当前目标框架中解析。 “.NETPortable,版本=v4.0,配置文件=配置文件5”。要解决此问题,请删除引用“System.IO”或将您的应用程序重新定位到包含“System.IO”的框架版本。 Google.Apis.Admin.Directory.directory_v1

我不知道为什么当我去选择它们(或不允许我编译)时,它和所有其他微软 API 都没有出现。我认为这是因为 .netportable 以及我不在 Windows 8.x 计算机上的事实。

有人知道如何更改目标吗?反正我看不出来这样做。

【问题讨论】:

  • 点击“更改”按钮时会出现什么?
  • Windows 8 / 8.1、silver light、windows phone 和 .net 4 / 4.5(无 Windows 7)
  • Google API 是否仅针对 Windows 8 构建?
  • 不,他们不是。在此之前我使用的是nuget的版本。 (我必须对它们签名,由于项目本身中的引用对象,我不能做 ildasm,所以我需要编译和签名)。

标签: c# visual-studio visual-studio-2013


【解决方案1】:

你有一个Portable Class Library。它缺少许多仅适用于 Windows 的命名空间和函数;基本上,PCL 被简化为可以在所有目标平台上运行的 .NET 的最小功能集。
对于许多缺失的命名空间,有替换 PCL;如果没有可用的,您可以在 PCL 中定义接口(并在特定于平台的代码中实现它们),作为 PCL 和例如Win32 上的 System.IO 命名空间。

简单示例:您在 PCL 中使用WriteFile(...)ReadFile(...) 定义IFileIO;那么每个使用 PCL 的项目(例如:WindowsIO Windows)都有一个实现 IFileIO 并在各自函数中执行 System.IO 调用的类。
然后将特定于 Windows 的实现与 PCL 接口结合起来;假设您有一个 ImageConverter 类,可以读取、修改和写入图像。它的构造函数接受IFileIO,您可以在其中传递WindowsIO 实例(或Win8IO,或AndroidIO,或...)。 ImageConverter 只使用接口,不关心实现。

【讨论】:

  • 我就是这么想的;感谢您的确认。反正我可以改变目标吗?我只需要临时修复,直到他们发布 API 的签名版本
  • @DaBlue:你可以试试converting it to a regular class library。我不知道 Windows 8 目标具有 .NET 的哪个子集,但我想应该涵盖大多数命名空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
相关资源
最近更新 更多