2013-12-16 130 views
2

我試圖爲Windows 8.1創建應用程序,並且作爲應用程序的一部分,我試圖將libgit2sharp移植到Windows 8.1類庫(不是可移植類庫)。我設法轉換了很多小問題,但是項目的很大一部分使用了UnmanagedType.CustomMarshalerICustomMarshaler,由於某種原因它似乎不被支持。有沒有辦法讓這個工作或解決方法?Windows 8.1中的UnmanagedType.CustomMarshaler應用程序

謝謝。

編輯:這裏是GitHub的網址,如果你需要檢查一下:https://github.com/mirhagk/windows8git

+0

你在錯誤窗口中得到了什麼錯誤? – Rafael

+0

''System.Runtime.InteropServices.UnmanagedType'不包含'CustomMarshaler''的定義和 '無法找到類型或名稱空間名稱'ICustomMarshaler'(您是否缺少using指令或程序集引用?)'是錯誤。如果您需要查看項目文件或任何內容,我已經修改了我的問題以包含github url。 – mirhagk

回答

5

這裏還有沒有幸福的答案,在這裏給。 System.Runtime.InteropServices.UnmanagedType枚舉從System.Runtime.InteropServices引用程序集明確省略CustomMarshaler枚舉。當然,ICustomMarshaler接口也是如此,就像編譯器告訴你的一樣。

您可以僞造UnmanagedType.CustomMarshaler值(44),但沒有辦法僞造該接口,您要編寫的替換版本將具有錯誤的類型標識。

這種遺漏是故意的。

請注意,這不可能是您唯一的障礙。如果你移植本地代碼,那麼你必須觀察已批准的winapi函數的白名單。這是一個short list。當你使用SDK頭部時,他們會讓你擺脫困境。但一定不要修改WINAPI_FAMILY宏來解決編譯錯誤,這並不能解決任何問題。只是複製一個DLL永遠不會工作。如果你這樣做,商店驗證程序將拒絕你的應用程序。

+0

好吧,看起來我不會爲C#使用任何git庫,然後,libgit2sharp與本機程序密切相關,並且它們還使用了很多在Windows 8上不支持的功能。必須查看我是否可以從其中一個功能中抽取一部分功能。 – mirhagk

+0

ps我已經將此標記爲正確的答案,但我會在獎勵獎金之前等一會兒。 – mirhagk

相關問題