2017-11-01 6 views
1

私は同じソリューション内の異なるプロジェクトとして、いくつかの独自のDLL(アプリケーションのプラグイン)を持つ大きなWinFormsアプリケーション(C#、.NET 4.5.2)を持っています。私はVisual Studio 2015コミュニティを使用しています。メインアプリケーションのメジャーバージョンとマイナーバージョンをDLLと共有するにはどうすればよいですか?

メインアプリとすべてのDLLは、このようなそれぞれのAssemblyInfo.csファイルに割り当てられたバージョン番号を持っている:

[assembly: AssemblyVersion("1.0.*")] 

は、今私は、アプリケーションのバージョンアップ2.0、たとえば、にしたいです。 。私はまた、すべてのDLLを2.0にしたい。。現在の方法では、各DLLに入り、バージョンを2.0に手動で変更する必要があります。

アプリケーションから「2.0」部分を継承する方法はありますか?将来、私はメジャーバージョン番号とマイナーバージョン番号を1か所で変更するだけです。

検索しましたが、回答が見つかりませんでした。

更新:

「some_string」はメジャーおよびマイナーバージョン番号を含む文字列です
[assembly: AssemblyVersion(some_string + ".*")] 

:私は期待していた何 は、私のようなもので

[assembly: AssemblyVersion("1.0.*")] 

を置き換えることができるということです。しかし、私はその文字列をどこで定義できるのか、それが全く可能なのか分かりません。

+0

アセンブリ言語は変更されるはずです。同じライブラリを正確にコピーすることを目的としていましたが、バージョン番号は異なります。しかし、Visual Studioで "プレビルド"スクリプト(バッチ、exe ..)を実行し、そのスクリプトを自分で作成してassembly.csを編集して、新しい値をコンパイルするとかわった。 – Franck

答えて

1

プロジェクトソリューションエクスプローラを介して他のプロジェクトに元AssemblyInfo.csファイルへのリンクを追加します。プロジェクトを右クリックし

- >Add - >Existing item - (ドロップダウンメニューから)

>Add as link

元のAssemblyInfo.csを変更すると、そのファイルがリンクとして追加されたすべてのプロジェクトに変更が適用されます。

編集:

(例えばGUIDなど)のアセンブリごとに一意である必要があり、属性の重複を避けるために、2つのファイルバージョン番号などの共有属性の一つであり、組立特定の属性のために別のものを作ります。誰もあなたがすべてを同じファイルに入れるよう強制することはありません。それでも名前を付ける必要はありません。AssemblyInfo.cs

+0

これにより、すべてのDLLがアセンブリとアセンブリのGUIDを含むすべての値を共有するようにするという警告を追加する必要があります。バージョン番号 – Franck

+0

だけでなく、これを正しく理解すれば、このリンクを追加するすべてのプロジェクトに対して同じAssemblyInfo.csが使用されますか?これは、AssemblyInfo.cs内の他のプロパティもすべて同じであることを意味します。私は "AssemblyTitle"、 "AssemblyDescription"など各DLLのために異なる値を使用しています。 – yesyes

+1

@yesyes私たちは、バージョン番号や会社情報などの共有情報のみを含む共有リンク「SharedAssemblyInfo.cs」を持っています。その情報をAssemblyInfo.csから削除し、プロジェクトでは両方のファイルを使用します。 –

0

Visual Studioでは、プレビルドイベントを設定できます。

  • 右その後、ビルド前のイベントの最初のボックスにあなたがこの

    if $(ConfigurationName) == Release C:\AssemblyChanger.exe $(ProjectDir) 
    
    のような簡単なスクリプトを起動することができますイベント

を構築するためのプロジェクトプロパティを選択

  • Go]をクリックします

    上記のサンプルスクリプトは、 "AssemblyChanger"を起動します。exe "は現在のVisual Studioプロジェクトフォルダを引数として渡します。そこから、" version "を管理している特定のプロジェクトのAssembly.csを読み込み、パス内のものを編集するのはとても簡単ですあなたはあなたがそれを行うための単純なコンソールアプリケーションを作成することができます(問題なく除去することができ、「あれば」という)。

    リリースモードである場合には、引数として渡した。プラスこれだけ呼び出されます。

    このスクリプトはすべてのDLLプリビルドイベントで設定できるので、コンパイル時にスクリプトを呼び出すと、コンパイラがDLLを作成する前にそのアセンブリを編集することになります。

  • 関連する問題