2

我在考慮用Windows 8編寫Windows Phone框架。這意味着我正在創建一個Portable Class Library(PCL)以用於這兩個平臺。在PortableLibrary代碼中缺少.net 4.5屬性

現在我的PCL面向.NET 4.5,Windows Phone 8和Windows Store應用程序,如您在項目屬性中所見。

PCL Target Frameworks

在該項目中,我需要使用Path.DirectorySeparatorChar,但我從編譯器收到以下錯誤:
System.IO.Path' does not contain a definition for 'DirectorySeparatorChar'

據我所知,那個特定的字符可能是在不同的目標操作系統不同的(我真的不知道他們是否),但爲什麼編譯器抱怨呢?我的意思是,財產幫助文檔說它支持.net框架4.5,我的目標是正確的框架? PCL是否真正針對完整的.net framework 4.5?

+1

同意,這是爲什麼'不包括在PCL Path.DirectorySeparatorChar',因爲它是*在所有你的目標平臺上可用的*,和幾個'Path'方法是PCL是一個謎。 **但**,你需要什麼財產?也許你可以直接使用'Path.Combine(string [])'來繞過它,這在* PCL中是可用的。 –

+0

我知道,我只是想知道爲什麼它不在那裏?我覺得我走在這裏空氣:( – sebagomez

+0

可能的原因是,通過自己編寫的函數,操縱路徑阻礙開發者,並鼓勵他們使用Path類呢? – Soonts

回答

4

對於Path.DirectorySeparatorChar

至於我記得我們從Windows應用商店中的順序刪除它不鼓勵手動解析路徑。一般來說,您應該使用Path.Combine()來組裝路徑,並使用Path.GetDirectoryName()來拆分它們。爲了檢查無效字符,還有另一種方法可以檢索這些字符。

所以實際上,你需要什麼屬性?

更新:要回答您對原理圖的理解:配置文件表示您在PCL對話框中選擇的平臺之間的API交集。一般而言,您定位的平臺越少,版本越新,您獲得的API就越多。檢查最早版本中的所有平臺基本上會爲您提供最低的公分母。

由於您已將.NET 4.5 作爲.NET Windows Store,因此無法訪問Path.DirectorySeparatorChar,因爲該屬性未包含在Windows應用商店中。

+0

我其實不需要它。我想知道爲什麼我沒有看到它,如果我的目標是.net 4.5,並且該屬性是.net 4.5的一部分。我想我之前提到的那些「簡介」是原因。我很想閱讀更多關於這些'配置文件' – sebagomez

+1

已更新的答案。 –

1

所以,這裏是從MSDN forum採取這個問題的實際答案。

當您創建PCL時,您只能擁有在該特定配置文件中定義的一部分API-s。配置文件是在所有平臺中可見的API列表。

現在,即使某些API在兩個個人平臺中都存在,但這並不意味着它會自動處於PCL配置文件中。爲什麼它錯過了任何人的猜測,但你無法自己推斷這些原因。

如果您看一下MSDN(使用.NET Framework進行跨平臺開發)的官方文檔,您會注意到可共享內容有幾個限制。我想那個特定的屬性不能滿足這些限制。

和認識的好方法是被支持的特定方法依賴於文件

你PCL的圖標可以使用.NET方法,其可用於所有目標。由於PathDirectorySeparator不適用於Windows應用商店應用,因此它不適用於定位Windows應用商店應用的PCL。你可以看到,它沒有店面支持環保購物袋標記在http://msdn.microsoft.com/en-us/library/system.io.path.aspx