2013-12-16 88 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

相关问题