現在実行中のアセンブリのパスを知ることに依存するいくつかの動作をデバッグする際に、ビルド出力パスを調整せずにC#VS 2010プロジェクトで次の行を実行すると、Assembly.GetExecutingAssemblyが大文字と小文字を区別する正しいパスを返すことに注意してください。 。
例えば、
string location = Assembly.GetExecutingAssembly().Location;
「C:\ src \ MyProject \ MyProject \ bin \ Debug\MyProject.exe」と表示されます
ここで、アセンブリを出力する別のディレクトリ(C:\ src \ MyCamelCaseDir \など)を作成し、[ビルド]-> [出力パス]をC:\ src \ mycamelcasedirに更新すると、上記のコードで文字列 "C: \ src \ mycamcelcasedir\MyProject.exe"。
区別は、明らかに
"..\\MyCamelCaseDir".equals("..\\mycamelcasedir")
OSがパスを大文字と小文字を区別するものとして扱わない場合でも、はfalseです。
Visual Studioでデバッグモードで実行することがこの理由だと思います...しかし、私はまだ少し混乱しています-GetExecutingAssemblyは、オペレーティングシステムがアセンブリ、ケース、およびすべてを含むと考えるディレクトリパスを返すべきではありませんか?
編集:私の質問はうまく表現されていないと思います。私の質問に対する正解は、VSがBuildOuputPathのテキストボックスとプロジェクト名を連結しているだけだと書いているポスターです。
私が尋ねようとしていた質問は、Assembly.GetExecutingAssembly()。Locationで、オペレーティングシステムが格納している方法で大文字と小文字を区別してパスを返さないのはなぜかということでした。
エクスプローラーウィンドウにC:\ foo \ barと入力すると、C:\ Foo \ Bar(そのようなディレクトリがある場合)に移動できるという点で、Windowsでは大文字と小文字が区別されないことを知っています。
しかし、デバッグするかどうかに関係なく、実行中のアセンブリの場所はすべての場合で同じだと思いました。