WindowsXP SP2 VB2005題名の通り、プロジェクトのファイル名(〜.vbproj)を取得しようと思いますがよく分かりません。どうすれば取得できるのでしょうか?
何のためにそのパスが必要なんでしょうか?出来上がったexeからは普通そんな情報必要ありませんよね?
> 何のためにそのパスが必要なんでしょうか?> > 出来上がったexeからは普通そんな情報必要ありませんよね?自分はいつもプロジェクト名をプログラムのIDとし、画面のタイトルバーに表示することにしていました。VB6ではApp.ExeNameです。vb2005ではプロジェクト作成時に入力したプロジェクトファイル名が、そのままアセンブリ名にも表示されます。アセンブリ名は別個変更ができてしまいますが、アセンブリ名は取得方法が分かるのでどうしてもプロジェクトファイル名が取得できなければこれを代用しようと思います。
ごめんなさい。なんでプロジェクトファイル名を動的に取得する必要があるか理解できない。 ~~~~~~~~~~~~~~EXEファイルにしてしまえば、別にプロジェクトファイルなんてなくても動きますよね?そのときに、プロジェクトファイル名を動的に取得なんで出来ないですよね?(VB6だってそうじゃないの?)
> ごめんなさい。> なんでプロジェクトファイル名を動的に取得する必要があるか理解できない。> ~~~~~~~~~~~~~~> > EXEファイルにしてしまえば、別にプロジェクトファイルなんてなくても動きますよね?> そのときに、プロジェクトファイル名を動的に取得なんで出来ないですよね?> (VB6だってそうじゃないの?)vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値(デフォルトではWindowsApplication1.vbproj)が表示されます。また、ビルドすると自動的にこの名前の実行ファイルが作成されます。それで画面を起動したときに、画面タイトル(画面のTextプロパティ)にそのプロジェクトファイルの値を表示しようと思ってます。VB6ではメニューのプロジェクト→全般→プロパティ名に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。この値はApp.EXENameで取得できました。
フウセンウナギ さん こんにちは。> vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、> プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値> (デフォルトではWindowsApplication1.vbproj)が表示されます。> また、ビルドすると自動的にこの名前の実行ファイルが作成されます。プロジェクトの「アセンブリ名」と、ついでに、「ルート名前空間」も変更して、その後「.vbproj」ファイルの中身を直接覗いてみました。で、「.vbproj」の中に「プロジェクト名」なんか欠片も残りませんね。要するにVB2005では、「プロジェクト名」って、単に「プロジェクトファイルのファイル名」ぐらいの位置づけでしかないのでは・・・VB6では、「プロジェクト名」とは全然関係ない「プロジェクトファイルのファイル名」を付けられましたよね?で、VB6のExeから、「プロジェクトファイルのファイル名」は参照できなかった・・・同じことではないでしょうか?
> フウセンウナギ さん こんにちは。> > > vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、> > プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値> > (デフォルトではWindowsApplication1.vbproj)が表示されます。> > また、ビルドすると自動的にこの名前の実行ファイルが作成されます。> > プロジェクトの「アセンブリ名」と、ついでに、「ルート名前空間」も変更して、> その後「.vbproj」ファイルの中身を直接覗いてみました。> で、「.vbproj」の中に「プロジェクト名」なんか欠片も残りませんね。> > 要するにVB2005では、「プロジェクト名」って、単に「プロジェクトファイルのファイル名」ぐら> いの位置づけでしかないのでは・・・> > > VB6では、「プロジェクト名」とは全然関係ない「プロジェクトファイルのファイル名」を付けられましたよね?> > で、VB6のExeから、「プロジェクトファイルのファイル名」は参照できなかった・・・> 同じことではないでしょうか?確認になりますが、VB6ではメニューのプロジェクト→〜のプロパティ→全般→プロジェクト名(さっきは間違って"メニューのプロジェクト→全般→プロパティ名"と書いてました)に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。そしてこの値はApp.EXENameで簡単に取得できます。"プロジェクトファイル名"ではなく"プロジェクト名"です。VB2005のコーディング画面でもソリューションエクスプローラーの一番上の項目をクリックすると、プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値が表示されます。プロジェクトファイルの説明には「プロジェクトのビルド、構成、およびその他の情報を含むファイルの名前です。」と記述されています。この値を変えると、ビルド時の名前も変わります。それで今気づいたのですが、VB2005でビルドされる実行ファイル名はプロジェクト名ではなくてアセンブリ名でした。なのでこちらを使用すれば済むことでした。
> 確認になりますが、VB6では> メニューのプロジェクト→〜のプロパティ→全般→プロジェクト名> (さっきは間違って"メニューのプロジェクト→全般→プロパティ名"と書いてました)> に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。> そしてこの値はApp.EXENameで簡単に取得できます。> "プロジェクトファイル名"ではなく"プロジェクト名"です。こちらからも確認です。そうやって、指定した後、一旦プロジェクトファイルに保存して、改めて、プロジェクト名を変更しても、プロジェクトファイル名は元のままですよね?また、逆に、「名前をつけてプロジェクトの保存」で別のプロジェクトファイル名に変更しても、「プロジェクト名」は変わりませんよね?> それで今気づいたのですが、VB2005でビルドされる実行ファイル名はプロジェクト名ではなくて> アセンブリ名でした。> なのでこちらを使用すれば済むことでした。ですよね・・・
> この値はApp.EXENameで取得できました。App.EXENameの代替でしたら、以下ではどうでしょうか?Dim AppExeName As String = System.IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)...これはご存知なのですね。> 確認になりますが、VB6では> メニューのプロジェクト→〜のプロパティ→全般→プロジェクト名> (さっきは間違って"メニューのプロジェクト→全般→プロパティ名"と書いてました)> に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。> そしてこの値はApp.EXENameで簡単に取得できます。ちょっと違うように思います。ヘルプには、|現在実行中の実行可能ファイルの、拡張子を除いたファイル名を取得します。|開発環境で実行している場合は、プロジェクト名が取得されます。とあります。App.EXENameでプロジェクト名が得られるのは、IDEから「実行」→「開始」した場合であり、たとえば、以下のような場合は結果が異なります。仮にProject1.vbpとしますと...「ファイル」→「Project1.Exeの作成」でExe名に別名「AnotherName.exe」を指定して「OK」を押し、作成されたAnotherName.exeを実行(IDEからではなくExeファイルを実行)した場合、App.EXENameは「AnotherName」となります。VB6.0でプロジェクト名だと思ってらっしゃったものが、実行環境では、実行可能ファイル名(アセンブリ名)になっていますので、VB.NETでもVB6.0と同様、プロジェクト名=アセンブリ名という開発ルールで利用されれば問題ないかと思います。
> ちょっと違うような。> ヘルプには、> |現在実行中の実行可能ファイルの、拡張子を除いたファイル名を取得します。> |開発環境で実行している場合は、プロジェクト名が取得されます。> とあります。> App.EXENameでプロジェクト名が得られるのは、> IDEから「実行」→「開始」した場合であり、> たとえば、以下のような場合は結果が異なります。> > 仮にProject1.vbpとしますと...> 「ファイル」→「Project1.Exeの作成」で> Exe名に別名「AnotherName.exe」を指定して「OK」を押し、> 作成されたAnotherName.exeを実行(IDEからではなくExeファイルを実行)した場合、> App.EXENameは「AnotherName」となります。あ。そうか・・・って事で、実際に確認してみました。プロジェクト名「A」プロジェクトファイル名「B.vbp」実行ファイル名「C.exe」IDE上では「App.EXEName」は「B」と表示されました。(つまり、プロジェクト名ではなく、プロジェクトファイル名を表示)実行モジュールでは「C」と表示されました。(つまり、プロジェクト名ではなく、実行モジュール名)結論、VB6では、「App.EXEName」は「プロジェクト名」では無い・・・#ビックリ!と言うことは、私の今までの発言の趣旨#(VB2005のプロジェクト名はプロジェクトファイル名と同等で、VB6でもプロジェクトファイル名は参照できないので、同じように参照できないでしょうね)#と言うのは、根本的に間違っていたっって事ですね。#申し訳ない。