tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルプロジェクトファイル名の取得
記事No4593
投稿日: 2006/11/29(Wed) 08:19
投稿者フウセンウナギ
WindowsXP SP2   VB2005

題名の通り、プロジェクトのファイル名(〜.vbproj)を取得しようと思いますが
よく分かりません。
どうすれば取得できるのでしょうか?

[ツリー表示へ]
タイトルRe: プロジェクトファイル名の取得
記事No4594
投稿日: 2006/11/29(Wed) 09:02
投稿者Blue
何のためにそのパスが必要なんでしょうか?

出来上がったexeからは普通そんな情報必要ありませんよね?

[ツリー表示へ]
タイトルRe^2: プロジェクトファイル名の取得
記事No4595
投稿日: 2006/11/29(Wed) 09:47
投稿者フウセンウナギ
> 何のためにそのパスが必要なんでしょうか?
>
> 出来上がったexeからは普通そんな情報必要ありませんよね?


自分はいつもプロジェクト名をプログラムのIDとし、
画面のタイトルバーに表示することにしていました。
VB6ではApp.ExeNameです。

vb2005ではプロジェクト作成時に入力したプロジェクトファイル名が、そのままアセンブリ名
にも表示されます。
アセンブリ名は別個変更ができてしまいますが、アセンブリ名は取得方法が分かるので
どうしてもプロジェクトファイル名が取得できなければこれを代用しようと思います。

[ツリー表示へ]
タイトルRe^3: プロジェクトファイル名の取得
記事No4599
投稿日: 2006/11/29(Wed) 13:52
投稿者Blue
ごめんなさい。
なんでプロジェクトファイル名を動的に取得する必要があるか理解できない。
                              ~~~~~~~~~~~~~~

EXEファイルにしてしまえば、別にプロジェクトファイルなんてなくても動きますよね?
そのときに、プロジェクトファイル名を動的に取得なんで出来ないですよね?
(VB6だってそうじゃないの?)

[ツリー表示へ]
タイトルRe^4: プロジェクトファイル名の取得
記事No4600
投稿日: 2006/11/29(Wed) 14:29
投稿者フウセンウナギ
> ごめんなさい。
> なんでプロジェクトファイル名を動的に取得する必要があるか理解できない。
>                               ~~~~~~~~~~~~~~
>
> EXEファイルにしてしまえば、別にプロジェクトファイルなんてなくても動きますよね?
> そのときに、プロジェクトファイル名を動的に取得なんで出来ないですよね?
> (VB6だってそうじゃないの?)


vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、
プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値
(デフォルトではWindowsApplication1.vbproj)が表示されます。
また、ビルドすると自動的にこの名前の実行ファイルが作成されます。

それで画面を起動したときに、画面タイトル(画面のTextプロパティ)
にそのプロジェクトファイルの値を表示しようと思ってます。


VB6ではメニューのプロジェクト→全般→プロパティ名に入力した値が、プロジェクトの
一番上の値(〜.vbp)になります。
この値はApp.EXENameで取得できました。

[ツリー表示へ]
タイトルRe^5: プロジェクトファイル名の取得
記事No4601
投稿日: 2006/11/29(Wed) 15:21
投稿者大吉末吉
フウセンウナギ さん こんにちは。

> vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、
> プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値
> (デフォルトではWindowsApplication1.vbproj)が表示されます。
> また、ビルドすると自動的にこの名前の実行ファイルが作成されます。

プロジェクトの「アセンブリ名」と、ついでに、「ルート名前空間」も変更して、
その後「.vbproj」ファイルの中身を直接覗いてみました。
で、「.vbproj」の中に「プロジェクト名」なんか欠片も残りませんね。

要するにVB2005では、「プロジェクト名」って、単に「プロジェクトファイルのファイル名」ぐら
いの位置づけでしかないのでは・・・


VB6では、「プロジェクト名」とは全然関係ない「プロジェクトファイルのファイル名」を付けられましたよね?

で、VB6のExeから、「プロジェクトファイルのファイル名」は参照できなかった・・・
同じことではないでしょうか?

[ツリー表示へ]
タイトルRe^6: プロジェクトファイル名の取得
記事No4602
投稿日: 2006/11/29(Wed) 16:24
投稿者フウセンウナギ
> フウセンウナギ さん こんにちは。
>
> > vb2005で、ソリューションエクスプローラーの一番上の項目をクリックすると、
> > プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値
> > (デフォルトではWindowsApplication1.vbproj)が表示されます。
> > また、ビルドすると自動的にこの名前の実行ファイルが作成されます。
>
> プロジェクトの「アセンブリ名」と、ついでに、「ルート名前空間」も変更して、
> その後「.vbproj」ファイルの中身を直接覗いてみました。
> で、「.vbproj」の中に「プロジェクト名」なんか欠片も残りませんね。
>
> 要するにVB2005では、「プロジェクト名」って、単に「プロジェクトファイルのファイル名」ぐら
> いの位置づけでしかないのでは・・・
>
>
> VB6では、「プロジェクト名」とは全然関係ない「プロジェクトファイルのファイル名」を付けられましたよね?
>
> で、VB6のExeから、「プロジェクトファイルのファイル名」は参照できなかった・・・
> 同じことではないでしょうか?


確認になりますが、VB6では
メニューのプロジェクト→〜のプロパティ→全般→プロジェクト名
(さっきは間違って"メニューのプロジェクト→全般→プロパティ名"と書いてました)
に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。
そしてこの値はApp.EXENameで簡単に取得できます。
"プロジェクトファイル名"ではなく"プロジェクト名"です。


VB2005のコーディング画面でも
ソリューションエクスプローラーの一番上の項目をクリックすると、
プロパティの「プロジェクトファイル」にプロジェクト作成時に入力した値
が表示されます。
プロジェクトファイルの説明には
「プロジェクトのビルド、構成、およびその他の情報を含むファイルの名前です。」
と記述されています。
この値を変えると、ビルド時の名前も変わります。


それで今気づいたのですが、VB2005でビルドされる実行ファイル名はプロジェクト名ではなくて
アセンブリ名でした。
なのでこちらを使用すれば済むことでした。

[ツリー表示へ]
タイトルRe^7: プロジェクトファイル名の取得
記事No4604
投稿日: 2006/11/29(Wed) 16:41
投稿者大吉末吉
> 確認になりますが、VB6では
> メニューのプロジェクト→〜のプロパティ→全般→プロジェクト名
> (さっきは間違って"メニューのプロジェクト→全般→プロパティ名"と書いてまし
た)
> に入力した値が、プロジェクトの一番上の値(〜.vbp)になります。
> そしてこの値はApp.EXENameで簡単に取得できます。
> "プロジェクトファイル名"ではなく"プロジェクト名"です。

こちらからも確認です。

そうやって、指定した後、一旦プロジェクトファイルに保存して、
改めて、プロジェクト名を変更しても、プロジェクトファイル名は元のままですよね?


また、逆に、「名前をつけてプロジェクトの保存」で
別のプロジェクトファイル名に変更しても、「プロジェクト名」は変わりませんよね?


> それで今気づいたのですが、VB2005でビルドされる実行ファイル名はプロジェクト名ではなく

> アセンブリ名でした。
> なのでこちらを使用すれば済むことでした。

ですよね・・・

[ツリー表示へ]
タイトルRe^5: プロジェクトファイル名の取得
記事No4603
投稿日: 2006/11/29(Wed) 16:32
投稿者だい
> この値は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と同様、プロジェクト名=アセンブリ名という開発ルールで
利用されれば問題ないかと思います。

[ツリー表示へ]
タイトルRe^6: プロジェクトファイル名の取得
記事No4605
投稿日: 2006/11/29(Wed) 17:41
投稿者大吉末吉
> ちょっと違うような。
> ヘルプには、
> |現在実行中の実行可能ファイルの、拡張子を除いたファイル名を取得します。
> |開発環境で実行している場合は、プロジェクト名が取得されます。
> とあります。
> 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でもプロジェクトファイル名は参照できないので、同じように参照できないでしょうね)
#と言うのは、根本的に間違っていたっって事ですね。
#申し訳ない。

[ツリー表示へ]