DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロダクトバージョン番号が更新されない。

環境/言語:[Windows8、VB2012]
分類:[.NET]

お世話になります。


Windows8、VB2012で、あるプロジェクトを開発しております。
スタートフォームをロードした際に、ラベルに、プロダクトバージョン番号を、
表示させるようにしております。


Private Sub frmStartForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        lblVersion.Text = Application.ProductVersion
End Sub

開発開始時より、何度も修正、ビルドを繰り返しているのですが、
この、プロダクトバージョン番号が、更新されていかず、
常に、「1.0.0.0」のままになっている状態です。


プロジェクトのプロパティ−発行−バージョンの番号、のところで、
メジャー=1、マイナー=0、ビルド=0、リビジョン=0、
発行ごとにリビジョンを自動的にインクリメントする、に、チェックがついております。


発行フォルダーの場所、は、
publish\
になっております。


コンパイル−出力ビルドパス、は、
bin\Debug\
になっております。


VB2012には、他のパソコンへのインストールのための、セットアップファイル作成機能がありません。InstallShieldやClickOnceなどのインストーラー作成ソフトは、現段階では、使用せず、他のパソコンでアプリケーションを実行させる場合は、bin\Release\に、ビルドして、このフォルダの中身を、直接手動で、パソコンのローカルに、設置しようと考えております。


お分かりになられましたら、どうぞご教示くださいませ。


どうぞよろしくお願い申し上げます。
■No31673に返信(ERIさんの記事)

ビルド−発行を、初めてしてみましたが、まだ、1.0.0.0のままです。
発行先は、プロジェクトのフォルダの直下に、publishフォルダを作り、
その中に。

また、この後、警告が出るようになってしまいました。

参照アセンブリ 'C:\Windows\assembly\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll' は、アプリケーションとは異なるプロセッサをターゲットにしています。

ネットで調べましたが、ヒットしませんでした。


引き続き、調べます。
■No31674に返信(ERIさんの記事)

以下のページを見つけました。

参照アセンブリ警告エラー
http://social.msdn.microsoft.com/Forums/ja-JP/c0acb6a3-45e5-48b6-b68c-61cd6e26dcb2

コンパイル−対象のCPU=AnyCPUをx86にすると、エラーは消えますが、
このプロジェクトは、64bitOSでも動かしますので、
x86には出来ません。

このエラーに関しましては、このまま、様子を見ようと思います。
> Windows8、VB2012で、あるプロジェクトを開発しております。
> スタートフォームをロードした際に、ラベルに、プロダクトバージョン番号を、
> 表示させるようにしております。

  その方は、アプリケーションのアセンブリの方になりますネ!

> プロジェクトのプロパティ−発行−バージョンの番号、のところで、
> メジャー=1、マイナー=0、ビルド=0、リビジョン=0、
> 発行ごとにリビジョンを自動的にインクリメントする、に、チェックがついております。

  インストーラの方のプロダクトバージョンになるので、上記の方の
  方法ではプロダクトバージョンは取得できません。

● EXE自体のバージョンなのか、インストーラのバージョンなのか
  どちらが必要なんでしょうか?

  因みに、インストーラの方の場合なら、レジストリからでしか取得
  できないと思います。

以上。
■No31673に返信(ERIさんの記事)
> lblVersion.Text = Application.ProductVersion

これは、
 プロジェクトのプロパティ
  [アプリケーション]タブ
   [アセンブリ情報]
    [ファイル バージョン]
を表しています。別の言い方をすれば、[My Project]の下の
AssemblyInfo.vb で示される AssemblyFileVersion 属性です。


なお、AssemblyFileVersion が設定されていない場合には、
アセンブリバージョン(AssemblyVersion) が表示されます。
どちらも無い場合は、「0.0.0.0」が返されます。


> −発行−バージョンの番号、のところで、
> メジャー=1、マイナー=0、ビルド=0、リビジョン=0、

これは配置バージョンであり、プロジェクトのバージョンとは別の物です。
ここで設定された値を得たいのであれば、参照設定に System.Deployment を
加えた上で、下記のように記述してみてください。

'Imports System.Deployment.Application

If ApplicationDeployment.IsNetworkDeployed Then
    Dim ver As Version = ApplicationDeployment.CurrentDeployment.CurrentVersion
    lblVersion.Text =ver.ToString()
Else
    lblVersion.Text = "(ClickOnce発行されていません)"
End If
■No31675に返信(ERIさんの記事)
> コンパイル−対象のCPU=AnyCPUをx86にすると、エラーは消えますが、
> このプロジェクトは、64bitOSでも動かしますので、
> x86には出来ません。

64bit OS であっても、x86 プロジェクトは利用できますよ。


> コンパイル−対象のCPU=AnyCPUをx86にすると、エラーは消えますが、

既に発行済みのプロジェクトがフォルダ内にある場合、
異なるプラットフォームを選ぶことはできないようになっています。

仮に、異なるプラットフォームに変更してから配置した場合、
クライアント側が、それを新規インストールした場合は問題ありあmせんが、
旧バージョンからバージョンアップさせる場合はインストールエラーとなります。
■No31676に返信(オショウさんの記事)

ありがとうございます。

EXE自体のバージョンを表示させたいと思います。
これまでは、VB6.0、VB.NET2003で開発しておりました。

VB6.0では、Version、App.Major、App.Minor、App.Revisionで番号を取得、EXE作成のたびに、番号が更新されていました。

VB.NET2003では、
こちらでは、[メニュー]−[ビルド]の中に、[発行]というものがなく、
同じ記述で、やはり、コードに変更がある度に、番号が更新されていました。
■No31677に返信(魔界の仮面弁士さんの記事)


ありがとうございます。


>>lblVersion.Text = Application.ProductVersion
>
> これは、
>  プロジェクトのプロパティ
>   [アプリケーション]タブ
>    [アセンブリ情報]
>     [ファイル バージョン]
> を表しています。別の言い方をすれば、[My Project]の下の
> AssemblyInfo.vb で示される AssemblyFileVersion 属性です。
>
>
> なお、AssemblyFileVersion が設定されていない場合には、
> アセンブリバージョン(AssemblyVersion) が表示されます。
> どちらも無い場合は、「0.0.0.0」が返されます。


こちらの番号を表示させたいです。上記の、ファイルバージョンを、更新していくためには、どのようにしたらよいでしょうか。


>>−発行−バージョンの番号、のところで、
>>メジャー=1、マイナー=0、ビルド=0、リビジョン=0、
>
> これは配置バージョンであり、プロジェクトのバージョンとは別の物です。
> ここで設定された値を得たいのであれば、参照設定に System.Deployment を
> 加えた上で、下記のように記述してみてください。
>
> 'Imports System.Deployment.Application
>
> If ApplicationDeployment.IsNetworkDeployed Then
> Dim ver As Version = ApplicationDeployment.CurrentDeployment.CurrentVersion
> lblVersion.Text =ver.ToString()
> Else
> lblVersion.Text = "(ClickOnce発行されていません)"
> End If

ありがとうございます。
■No31678に返信(魔界の仮面弁士さんの記事)


>>コンパイル−対象のCPU=AnyCPUをx86にすると、エラーは消えますが、
>>このプロジェクトは、64bitOSでも動かしますので、
>>x86には出来ません。
>
> 64bit OS であっても、x86 プロジェクトは利用できますよ。


そうなのですね。ありがとうございます。


>>コンパイル−対象のCPU=AnyCPUをx86にすると、エラーは消えますが、
>
> 既に発行済みのプロジェクトがフォルダ内にある場合、
> 異なるプラットフォームを選ぶことはできないようになっています。
>
> 仮に、異なるプラットフォームに変更してから配置した場合、
> クライアント側が、それを新規インストールした場合は問題ありあmせんが、
> 旧バージョンからバージョンアップさせる場合はインストールエラーとなります。

ありがとうございます。
お2人様に頂きましたアドバイスをもとに、検索してみました。
以下のサイトが見つかりました。


アセンブリにバージョン情報を設定するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/187asmverinfo/asmverinfo.html


アセンブリ・バージョンとファイル・バージョンを一致させるには?[VS 2005のみ、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/664setsamevesion/setsamevesion.html


VB.NET2003では、ソリューションエクスプローラーに、AssemblyInfo.vbが、デフォルトで表示され、その内部においては、
<Assembly:AssemblyVersion("1.0.*")>
が、デフォルト設定になっていました。


一方、VB2012では、ソリューションエクスプローラーの上側にある、「すべてのファイルを表示する」を押して、My Projectの下に、このファイルがありました。


また、こちらでは、
<Assembly:AssemblyVersion("1.0.0.0")>
<Assembly:AssemblyFileVersion("1.0.0.0")>
が、デフォルト設定になっていました。


この部分を、
<Assembly:AssemblyVersion("1.0.*")>
に変更して、解決しました。


ありがとうございました^^。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板