2017-02-22 12 views
1

フォームに製品バージョンを追加したい。 [assembly: AssemblyVersion("1.0.*")]Visual Studio自動インクリメントを取得する製品バージョン

string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); 

これは私が見つけた解決策です。しかしバージョンは "1.0.6262.26540"のようになります。 ルールを変更することはできますか、またはVisual Studioがプログラムによって生成する公開バージョンを取得できますか? Publish Version generated by Visual Studio

+0

[Application.ProductVersion](https://msdn.microsoft.com/en-US/library/system.windows.forms.application.productversion(v = vs.110).aspx)? – Fildor

+0

それは私が探しているものではありません。 Application.ProductVersionの出力は1.0.6262.26540です。私はバージョン1.0.0.12にしたい – itskajo

+0

あなたはAssemblyInfo.csを見て、そこにバージョンがあるか確認できますか? – Fildor

答えて

2

ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()を使用できます。ただし、これはClickOnceパブリッシャインストーラ(ApplicationDeployment.IsNetworkDeployedが返すtrueを返す)によってインストールされたプログラムのバージョンを実行している場合にのみ機能します。

CurrentDeploymentプロパティにアクセスしようとすると、コンパイルされたアセンブリを直接(たとえばデバッグ中に)開始すると、InvalidDeploymentExceptionが表示されます。これに対して保護するために、あなたはこのようなものを使用することができます:あなたがされていない場合のClickOnceを使用して

string CurrentVersion 
{ 
    get 
    { 
     return ApplicationDeployment.IsNetworkDeployed 
      ? ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString() 
      : "1.0.0.0"; // Fallback version string, or retrieve from assembly as in your question 
    } 
} 

を、私はあなたが「公開バージョン」にアクセスすることを期待できることを確認していないソフトウェアを配布する機能を公開します。

+0

私はClickOnce Publisher:Dを使っていますが、私は追加する必要がある名前空間であるApplicationDeploymentを見つけることができませんか? – itskajo

+1

@itskajo [System.Deployment.Application](https://msdn.microsoft.com/de-de/library/system.deployment.application.applicationdeployment(v = vs.110).aspx) – Fildor

関連する問題