答案 0 :(得分:0)
很可能你错过了这样一个事实:你可以用C ++编写并将其编译成MSIL程序集并将其作为.net托管代码运行。
去看看 - 在Microsoft Visual Studio for C ++中,有一个编译器开关/clr:pure
或其他标志(msdn:https://msdn.microsoft.com/library/k8d11d4s.aspx)。
使用此模式时,您将能够使用特殊标记来定义应将特定类编译为CLR托管类。如果你小心并正确地写一切,/ clr:pure将发出一个正常的100%管理程序集。我很想在C#"中说出所有的一切。但事实并非如此,生成的代码会有所不同,但是,一切都会有效,元数据会在那里等等.ILSpy会像C#,VB.Net或F#生成的任何程序集一样反编译,但可能是代码/名称/等会更加严重。
旁注:如果你投资一些像Reflector这样的真正的反编译器,他们通常会采用C#程序集并将其反编译为 - 如果是在托管中编写的C ++,反之亦然。
此外,如果你不关心"纯" msil,您甚至可以混合使用本机代码和托管代码。原生C ++中的一半代码,另一半是托管代码,只需要关注指针和引用以及清理,编译器会愉快地为您发出混合程序集 - 这里我不知道ILSpy是否能够向您展示任何内容。可能它会向您显示托管部分并显示本机部分在那里但是不可拆卸。
最后,它也是https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-build-a-multifile-assembly ILSpy可能也支持的。{/ p>