使用Windows API方法签名,结构,常量的Big C#源文件:它们是否都包含在最终的.exe中?

Ale*_*ang 8 c# pinvoke winapi interop external

我想将我正在使用的Windows API函数的所有签名放在一个类中的程序中,例如WinAPI,以及我将包含在我的项目中的WinAPI.cs文件中.该类将是内部静态和方法public static extern.(类似.NET Framework源代码中的巨大NativeMethods.cs).

假设WinAPI.cs有一百个本地方法签名,如:

[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
Run Code Online (Sandbox Code Playgroud)
  1. 如果我只在项目中使用其中一些(甚至一两个),如果我在项目中包含WinAPI.cs文件,那么最终的.exe是否会填充不必要的方法声明我不是使用(其他99左右)?

  2. 原生结构声明如何,如果我没有在当前项目中使用它们,它们是否仍会包含在最终的.exe中?

        [StructLayout(LayoutKind.Sequential)]
        public struct POINT
        {
            public int X;
            public int Y;
        }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 那些常量声明或只读成员如:

    public const int WH_JOURNALPLAYBACK = 1;
    public static readonly int WM_GETTEXT = 0x0D;
    
    Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 2

所有这些都将包括在内。但是,它将作为 IL 包含在内,并且当程序运行时,它只是编译后的机器代码。我们谈论的空间最多可能是 40K。