1

設計時にすべて共通のDLLを参照するいくつかのVisualStudioソリューション/プロジェクト(一部のVB、一部のC#)があります。このDLLは、コードの記述中にのみ必要になるため、出力フォルダーにコピーする必要はありません。数か月ごとに、このDLLは新しいバージョンに更新され、すべてのプロジェクトは更新されたバージョンを参照する必要があります。

これを処理するための最良の方法は何ですか?

4

2 に答える 2

2

GAC (グローバル アセンブリ キャッシュ) で共有される共有アセンブリを使用する必要があります。

たとえば、クラスやソフトウェアの一部などをプログラミングし、それを共有アセンブリにしたいとします。

最初に、VS で新しいクラス ライブラリ プロジェクトを作成し、すべてのコードをそのプロジェクトに転送してアセンブリにします。まだビルド/実行しないでください! コードを転送しただけで、プロジェクトをまだビルドしていないため、アセンブリ (.DLL ファイル) は実際にはまだ作成されていないことに注意してください。

アセンブリをビルドする前に、アセンブリを識別するためのキーを 2 つの手順で作成/共有する必要があります。

a) VS cmd で以下の cmd を実行してキーを作成します。

sn -k "C:[DirectoryToPlaceKey][KeyName].key" b) クラス ライブラリ プロジェクトのプロパティ フォルダーにある AsseblyInfo.vb/cs ファイルに以下の属性を追加して共有します。

VB.Net では:

C# の場合:

[Assembly: AssemblyKeyFile("C:[キー ファイルを含むディレクトリ][KeyName].key")] (これをコピーして AssemblyInfo.vb/cs ファイルに貼り付けますが、代わりにディレクトリとファイル名を記述します)。

ここで、プロジェクトをビルドしてアセンブリを作成します。プロジェクトをビルドするだけです (少なくとも F5 を一度だけ押してください!)。そうすることで、必要な .dll ファイル (アセンブリ) が、プロジェクトの同じフォルダー内の "bin" フォルダーに作成されます。

ここで、.dll ファイルを GAC (グローバル アセンブリ キャッシュ: すべてのアセンブリが集められる場所) にコピーして共有します。ディレクトリは「C:\windows\Microsoft.Net\assembly\GAC_MSIL」ですが、以下のツールがあなたのためにそれを行うので、それを知る必要があります~) VSコマンドで以下のコマンドを実行することによって:

gacutil -I "C:[PathToBinDirectoryInVSProject]\myGAC.dll"

あなたは完了です!これで、すべてのアプリケーションから共有アセンブリを参照して使用できるようになり、更新する必要があるときはいつでも共有アセンブリを更新するだけです。

それが役立つことを願っています!

于 2012-04-18T17:56:38.653 に答える
0

nugetリソースを作成し、Nugetサーバーを使用できます(teamcityの最新バージョンがサポートしています)。すべての更新はnugetによって処理されます。

他のアプローチは、共通フォルダーとすべてのプロジェクトポイントをこのフォルダーに(比較的)作成することです。この場合、1つのフォルダーにdllを更新する必要があります(ソリューションの再構築後、dllは自動的に更新されます)

もちろん、いつでもdllをGAC(グローバルアセンブリキャッシュ)にインストールできます。これは、gacutil.exeというツールによって処理されます(ネットでは、処理方法の例がたくさんあります)。

于 2012-04-18T17:54:18.360 に答える