2014-02-15 72 views
4

這主要出現在嘗試調試F#代碼在Visual Studio調試器,它期望C#語法:如何引用C#上下文中包含單引號的F#名稱?

調試器無法識別F#表達式。要在F#調試期間在調試器窗口或對話框中輸入表達式,必須將表達式轉換爲C#語法。將F#表達式轉換爲C#時,請務必記住C#使用==作爲比較運算符以獲得相等性,並且F#使用單個=。

(從http://msdn.microsoft.com/en-us/library/vstudio/ee843932.aspx

的問題是,我有變量,包含單引號字符,如path'功能,但單引號似乎並不有效,在C#的名字,在這樣進入path'調試器窗口只是說:Newline expected in constant或類似的話,因爲它認爲我開始一個字符文字。即使右擊它並通過上下文菜單添加手錶也會出現類似的錯誤。

我怎麼能翻譯包含單引號到C#語法F#的名字,這樣我可以從調試器中檢查他們或從C#代碼參考呢?

+0

很多F#的內在功能與別名名稱秉承框架設計指南。我假設有一個屬性可以被添加到一個控制IL中外部名稱的函數中。 (我知道這並不直接解決問題,但它可能會給你的想法/期權) –

+0

你也許可以使用反射。你只是將F#代碼翻譯成C#,或者你是否真的從C#調用F#? – Jwosty

+0

@Jwosty:後者。 –

回答

3

我不認爲有辦法做到這一點 - 所以最好的選擇可能是將變量path'重命名爲其他一些有效的C#標識符,如pathAux。儘管F#在命名上更加靈活(並允許諸如path'甚至之類的東西),但在大多數情況下使用C#兼容的標識符名稱可能是一個好主意,因爲它會使代碼更易於閱讀觀衆 - 比如C#開發者。

+0

不幸的是,不是我的代碼,涉水而過它與SED會顯得不禮貌。但感謝您的意見。如果沒有其他事情出現,我會在幾天內接受你的回答。 –

+1

@BenMillwood有道理 - 即使你想改變的代碼,您可能要等到F#電動工具的作者增加對重命名支持重構:-)(希望即將推出!)http://visualstudiogallery.msdn.microsoft。 COM/136b942e-9f2c-4c0b-8bac-86d774189cff –

相關問題