リフレクションを使用してプロジェクト名を取得しようとしていますが、部分文字列メソッドで「インデックス外のエラー」が発生します。リフレクションを使用して実行アセンブリ名を取得する
string s = System.Reflection.Assembly.GetExecutingAssembly().Location;
int idx = s.LastIndexOf(@"\");
s = s.Substring(idx, s.Length);
なぜ3行目でエラーが出るのかわかりません。
Plzヘルプ。
:これを試してみてください。コードにはプロジェクト名が含まれていません。 – leppie
彼らはブレークポイントを発明しました... –
あなたのパスの長さは15文字で、s.Lengthは15であるとします。2つのパラメータを持つ部分文字列は、開始インデックスと長さを受け取ります。したがって、あなたの例では、開始インデックスから15文字を取得しようとしているため、インデックスが範囲外になります。サブストリングの使用を主張する場合は、2番目のパラメータをs.Length-idxに変更する必要があります。そうでない場合は、下記のようにSystem.IO.Path.GetFileNameを使用します。あなたの方法は、あなたも本当にidx + 1、s.Length - idx - 1を望むので、あなたの方法も\を返すでしょう –