Unix のファイル パスでの円記号のマッピング
Unix のディレクトリ名とファイル名で、円記号 (\
) 文字は有効です。 .NET 8 以降、ネイティブ CoreCLR ランタイムは Unix で \
文字をディレクトリ区切り記号のスラッシュ (/
) に変換しなくなりました。 この変更により、円記号文字を含む名前を持つパスに .NET アプリケーションを配置できます。 また、ネイティブ ランタイム、dotnet
ホスト、および ilasm
と ildasm
ツールが円記号文字を含むパス上のファイルにアクセスできるようになります。
以前の動作
Unix でネイティブ CoreCLR ランタイムは、ファイル パス内の円記号 (\
) 文字をスラッシュ (/
) に自動的に変換していました。
新しい動作
Unix でネイティブ CoreCLR ランタイムは、ファイル パス文字は変換しません。
導入されたバージョン
.NET 8 Preview 1
破壊的変更の種類
この変更は、動作変更です。
変更理由
この変更がなければ、円記号文字を含むディレクトリにある .NET アプリは起動に失敗します。
推奨アクション
- アプリでは、
\
や/
にハードコーディングせずに、Path.DirectorySeparatorChar をディレクトリの区切り記号として使用してください。 - Unix で
dotnet
ホスト、ホスティング API、およびilasm
やildasm
のツールに渡すファイル パスのディレクトリ区切り文字には、/
を使用してください。 - Unix のさまざまな
DOTNET_xxx
環境変数では、/
をファイル パスのディレクトリ区切り記号として使用してください。
影響を受ける API
- ホスト API
- System.Runtime.InteropServices.DllImportAttribute.Value
- System.Runtime.InteropServices.NativeLibrary.Load
- System.Runtime.InteropServices.NativeLibrary.TryLoad
- System.Reflection.Assembly.LoadFrom
- System.Reflection.Assembly.LoadFile
- System.Reflection.Assembly.UnsafeLoadFrom(String)
- System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String)
- System.Runtime.Loader.AssemblyLoadContext.LoadFromNativeImagePath(String, String)
- System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDllFromPath(String)
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET