Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows 8.1应用程序中的UnmanagedType.CustomMarshaler_C#_.net_Windows 8.1 - Fatal编程技术网

C# windows 8.1应用程序中的UnmanagedType.CustomMarshaler

C# windows 8.1应用程序中的UnmanagedType.CustomMarshaler,c#,.net,windows-8.1,C#,.net,Windows 8.1,我正在尝试为windows 8.1制作一个应用程序,作为应用程序的一部分,我正在尝试将libgit2sharp移植到windows 8.1类库(而不是可移植类库)。我已经成功地转换了许多小问题,但是项目的很大一部分使用了非托管类型.CustomMarshaler和ICustomMarshaler,出于某种原因,它们似乎不受支持。有没有办法让它发挥作用,或者有没有办法使用它 多谢各位 编辑:如果您需要查看github url,请点击这里:这里没有令人满意的答案。System.Runtime.Int

我正在尝试为windows 8.1制作一个应用程序,作为应用程序的一部分,我正在尝试将libgit2sharp移植到windows 8.1类库(而不是可移植类库)。我已经成功地转换了许多小问题,但是项目的很大一部分使用了
非托管类型.CustomMarshaler
ICustomMarshaler
,出于某种原因,它们似乎不受支持。有没有办法让它发挥作用,或者有没有办法使用它

多谢各位


编辑:如果您需要查看github url,请点击这里:

这里没有令人满意的答案。System.Runtime.InteropServices引用程序集中的System.Runtime.InteropServices.UnmanagedType枚举显式地忽略了CustomMarshaler枚举。当然,ICustomMarshaler接口也丢失了,就像编译器告诉您的那样

您可以伪造UnmanagedType.CustomMarshaler值(44),但无法伪造接口,您要编写的替换版本将具有错误的类型标识

这一遗漏是故意的


请注意,这可能不是你唯一的障碍。如果移植本机代码,则必须遵守已批准的winapi函数的白名单。这是一个好主意。当您使用SDK头时,它们将使您免于麻烦。但请确保永远不要修补WINAPI_系列宏来解决编译错误,这并不能解决任何问题。仅仅复制一个DLL也不起作用。如果您这样做,应用商店验证过程将拒绝您的应用。

在“错误”窗口中出现的错误是什么?
“System.Runtime.InteropServices.UnmanagedType”不包含“CustomMarshaler”的定义。
并且
找不到类型或命名空间名称“ICustomMarshaler”(是否缺少using指令或程序集引用?)
是错误。如果您需要查看项目文件或其他任何东西,我已经修改了我的问题,将github url包括在内。好的,看起来我不会使用任何用于C的git库。那么,libgit2sharp与本机程序有着非常密切的联系,其他人使用了很多windows 8不支持的功能。我没有o看看我是否可以从其中一个中提取功能的子集。ps我已将此标记为正确答案,但在授予奖金之前,我将稍等片刻。