さまざまなアプリケーションで何度も何度も使用しているコードがかなりあります。私は最近、時間をかけてすべてを1つの場所に整理し、どのソリューションからでも参照できるようにすることにしました。私はクラスライブラリプロジェクトから始めて、使用するさまざまな関数といくつかの派生コントロールを追加しました。一部の関数は、派生コントロールによって使用されるだけでなく、アプリケーションから直接呼び出されます。プロジェクトをビルドし、プロジェクトでDLLの使用を開始しました。
このカスタムDLLに関していくつか質問があります(私はVisual C#2010 Expressを使用しています):
- 私が最初に気付いたのは、それが標準のMicrosoftライブラリのようには機能していないように見えることです。たとえば、「usingSystem.Windows.Controls;」を使用できます。プログラム内ですが、カスタムライブラリの名前空間を参照できるのはusingディレクティブのみです。理にかなっているのであれば、同じようにクラスを編成するとよいでしょう。Microsoftのようにクラスをネストすることは可能ですか?
編集:たとえば...アプリケーションコードの先頭に「Systemを使用して」と入力すると、選択できるサブ名前空間がたくさん表示されます。「Windows」と入力し続けると、さらに多くのサブカテゴリが表示されます。MyCustom.dllへの参照を追加し、「using MyCustom。」と入力し始めると、クラスまたはサブクラスが表示されません。クラスライブラリ内で物事を整理して、ストックライブラリのように動作させる方法を尋ねています。
再利用可能なすべてのコードを使用して1つの大きなDLLファイルを作成することをお勧めしますか?現時点では大量のコードはありませんが、拡張の余地を残したいと思います。このためのベストプラクティスは何ですか?
アプリケーションのインストーラーを作成するときにDLLをどのように処理しますか?私は通常、InnoSetupを使用してインストーラーを作成します。
これが私の主な関心事です...Application1でカスタムDLLの関数を使用し、誰かがそれをインストールしたとします。後でいくつかの機能を追加するか、構築しているApplication2のその機能に変更を加えます。新機能がApplication1を壊したり、望ましくない方法で何かを変更したりした場合、ユーザーがApplication2をインストールするとどうなりますか?カスタムDLLはアプリケーション間で共有されますか、それとも各アプリケーションに独自のバージョンのDLLがありますか?明らかに、新しいバージョンのApplication1をビルドして、新しいDLLで動作するようにしますが、ユーザーがそれを更新するという保証はありません。
ありがとう!