【问题标题】:Missing .net 4.5 property in PortableLibrary codePortableLibrary 代码中缺少 .net 4.5 属性
【发布时间】:2014-02-05 10:28:41
【问题描述】:

我正在编写一个考虑 Windows 8 的 Windows Phone 框架。这意味着我正在创建一个Portable Class Library (PCL) 以在两个平台上使用。

现在我的 PCL 的目标是 .NET 4.5、Windows Phone 8 和 Windows Store 应用程序,您可以在项目属性中看到。

在该项目中,我需要使用 Path.DirectorySeparatorChar,但我从编译器收到以下错误:
System.IO.Path' does not contain a definition for 'DirectorySeparatorChar'

我知道该特定字符在不同的目标操作系统中可能会有所不同(我真的不知道它们是否不同),但为什么编译器会抱怨它?我的意思是,属性帮助文档说它受 .net 框架 4.5 支持,我的目标是正确的框架吗? PCL 是否真的针对完整的 .net 框架 4.5?

【问题讨论】:

  • 同意为什么Path.DirectorySeparatorChar 不包含在 PCL 中是个谜,因为它 在您所针对的所有平台上都可用,并且有几个 Path 方法是PCL。 但是,你需要这个属性做什么?也许您可以通过直接使用Path.Combine(string[]) 来规避它,这 在 PCL 中可用。
  • 我知道,我只是想知道为什么它不在那里?我觉得我在这里走在空中:(
  • 可能的原因是不鼓励开发人员编写自己的操作路径的函数,并鼓励他们改用 Path 类?
  • @AndersGustafsson,因为我们已弃用它,因此未将其包含在较新的平台中,例如 .NET For Windows Store 应用程序。
  • 很遗憾,我们无法按平台过滤成员列表。查看Path 的文档。如您所见,有些成员有绿色手提箱,表示支持商店,有些则没有。此外,您链接的页面在底部的支持平台列表中没有显示 Windows Store,这意味着它不受支持。我们很想改变我们的文档基础架构的工作方式,但这还没有发生。

标签: windows-phone .net-4.5 visual-studio-2013 portable-class-library


【解决方案1】:

关于Path.DirectorySeparatorChar

据我所知,我们已将其从 Windows 应用商店中删除,以阻止手动解析路径。一般来说,您应该使用Path.Combine() 来组装路径,并使用Path.GetDirectoryName() 来拆分它们。为了检查无效字符,还有另一种方法可以检索这些字符。

所以实际上,您需要该属性做什么?

更新:回答您关于了解配置文件的原始问题:配置文件代表您在 PCL 对话框中选择的平台之间的 API 交集。一般来说,您定位的平台越少,版本越新,您获得的 API 就越多。检查最旧版本中的所有平台基本上可以得出最低的公分母。

由于您的目标是 .NET 4.5 .NET Windows 应用商店,因此您无法访问 Path.DirectorySeparatorChar,因为该属性不包含在 Windows 应用商店中。

【讨论】:

  • 我其实不需要它。我想知道如果我的目标是 .net 4.5 并且该属性是 .net 4.5 的一部分,为什么我没有看到它。我猜我前面提到的那些profiles 是原因。我很想了解更多关于profiles
【解决方案2】:

所以,这是从MSDN forum 获取的这个问题的实际答案。

当您创建 PCL 时,您只能拥有在该特定配置文件中定义的 API 子集。配置文件是在所有平台上可见的 API 列表。

现在,即使某些 API 在两个单独的平台中都存在,但这并不意味着它会自动出现在 PCL 配置文件中。为什么会丢失是任何人的猜测,但您无法自己推断出这些原因。

如果您查看 MSDN(使用 .NET Framework 进行跨平台开发)上的官方文档,您会注意到对于可以共享的内容有几个限制。我猜那个特定的属性不满足这些限制。

了解特定方法的好方法是依赖于文档的图标

您的 PCL 可以使用对其所有目标都可用的 .NET 方法。由于 PathDirectorySeparator 不适用于 Windows 应用商店应用程序,因此它不适用于针对 Windows 应用商店应用程序的 PCL。你可以在http://msdn.microsoft.com/en-us/library/system.io.path.aspx看到它没有用于商店支持的绿色购物袋标记

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2022-01-20
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多