実際の答えを提供できるのは .Net チームだけだと思いますが、仮定を立てることしかできません。
おそらく多くの理由があります。ここにいくつかの推測があります:
- Win32 API はエラーが発生しやすいです。多くの Win32 メソッドでは、開発者が安全でないハンドル (
IntPtr
オブジェクトとして表されることが多い) を操作する必要があります。これは、.Net のやり方ではありません (たとえば、CreateFile
/ ReadFile
/ WriteFile
/の代わりに FileStream を使用する必要がありますCloseHandle
) 。
- mscorlib に Win32 API 全体を追加しても意味がありません。開発者の 0.1% しか実際に使用していません。
- Microsoft は開発者がマネージ コードを書くことを好む
- .Net フレームワークは、プラットフォームに依存しないように設計されています。そのため
Environment.NewLine
、たとえば ( A string containing "\r\n" for non-Unix platforms, or a string containing "\n" for Unix platforms.
) が表示されます。したがって、Win32 API 全体を追加しても意味がありません。
Microsoft は名前空間にいくつかの Windows 固有のクラスを追加しましたMicrosoft.Win32
が、非常に限定されており、これらの機能は不可欠です (レジストリ操作、ファイルダイアログなど)。
pinvoke.net に関しては、私はあまり頼りません。x64 システムでクラッシュする不適切なメソッド宣言をよく見かけます (構造体レイアウトint
の問題ではなくIntPtr
...)。別の例:WriteFile
メソッドの宣言に一貫性がありません。SafeHandle
対IntPtr
...など。