「MonoやXamarinで絶対パスを取得する」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
C#において[[Windows]]上で絶対パスを取得するだけならばSystem.IO.Path.GetFullPathメソッドでいいわけだが、
 
C#において[[Windows]]上で絶対パスを取得するだけならばSystem.IO.Path.GetFullPathメソッドでいいわけだが、
[[Linux]]上の[[mono]]や[[MacOS]]上の[[Xamarin]]などではホームディレクトリを表す「~(チルダ)」を解決してくれなくて残念な結果になる。
+
[[Linux]]上の[[mono]]や[[MacOS]]上の[Xamarin]などではホームディレクトリを表す「~(チルダ)」を解決してくれなくて残念な結果になる。
  
 
; ダメな例
 
; ダメな例
10行目: 10行目:
 
     using System;
 
     using System;
 
     using System.IO;
 
     using System.IO;
    using System.Runtime.InteropServices;
 
  
 
     public static class PathUtil
 
     public static class PathUtil
17行目: 16行目:
 
         {
 
         {
 
             var realPath = "";
 
             var realPath = "";
             if (path.StartsWith("~/", StringComparison.Ordinal))
+
             if (path.StartsWith("~", StringComparison.Ordinal))
 
             {
 
             {
#if NETCOREAPP
 
                string homePath = (
 
                    RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ||
 
                    RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
 
                        ? Environment.GetEnvironmentVariable("HOME")
 
                        : Environment.GetEnvironmentVariable("UserProfile");
 
#else
 
 
                 string homePath = (
 
                 string homePath = (
 
                     Environment.OSVersion.Platform == PlatformID.Unix ||
 
                     Environment.OSVersion.Platform == PlatformID.Unix ||
31行目: 23行目:
 
                         ? Environment.GetEnvironmentVariable("HOME")
 
                         ? Environment.GetEnvironmentVariable("HOME")
 
                         : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
 
                         : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
#endif               
+
 
                 realPath = Path.Combine(homePath, path.Substring(2));
+
                 realPath = Path.Combine(homePath, path.Substring(1));
 
             }
 
             }
 
             else
 
             else
41行目: 33行目:
 
             return Path.GetFullPath(realPath);
 
             return Path.GetFullPath(realPath);
 
         }
 
         }
 +
    }
 
</source>
 
</source>
  

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)