C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.79551 の関連記事表示

<< 0 >>
■79551  Re[4]: 顧客別オプションのうまいやりかた
□投稿者/ Jitta -(2016/04/13(Wed) 21:35:47)
    機能のプラグイン/アドオン DLL というのは同じ。

    C#/VB.NET では、プロジェクトフォルダ外にあるファイルをプロジェクトに追加すると、プロジェクト フォルダにコピーが作られてしまいます。
    ですので、DLL に分けて、DLL を参照するというのが一般的かと。

    しかし、そうすると、DLL が大量にできてしまいます。
    で、顧客毎に「どの DLL だっけ?」とかになってしまう、と。
    できるだけ DLL を作りたくないなぁ、と思うことがありました。
    そこで発想を逆転。
    顧客別プロジェクトに共通機能をプラグインする。
    プロジェクト フォルダー外のファイルをプロジェクトに追加するからコピーされる。
    じゃぁ、プロジェクト フォルダー外に置いたまま、プロジェクト フォルダーに持ってくれば良いじゃないか。
    つまり、シンボリック リンクを作成する。
    プロジェクト フォルダーにファイルへのシンボリック リンクを作成してみたのですが、"リンク"を Subversion に登録できなかった(実体になってしまった)。
    で、フォルダーのリンクにして、リンクを作るバッチ ファイルを作ってみた。
    リポジトリから取り出してきたとき、最初に1度だけ、バッチを実行する、と。
    フォルダー構成は、こんな感じ。
    Solution
     |−共通機能
     | |−共通機能を実現するためのソース コード ファイル
     |
     |−A様向けプロジェクト
     | |−共通機能へのシンボリックリンク
     | |−リンク作成バッチ
     | |−A様向け機能を実装するためのファイル
     |
     |−B様向けプロジェクト
     | |−共通機能へのシンボリックリンク
     | |−リンク作成バッチ
     | |−B様向け機能を実装するためのファイル

    まぁ、P/Invoke の機能をひとつ所にまとめたい、かつ、お客様には実行ファイル単体で配布したい、ということで実験的に作ったソリューションなんだけど。
    上記はソリューションの下にお客様毎のプロジェクトとしていますが、要はプロジェクトの下に共通部を収めたフォルダーへのリンクがあるということです。

    こうすると、プロジェクト フォルダー下にあるファイルをプロジェクトに追加することになり、コピーは作られない。
    機能的なことは共通機能に実装し、機能を実行する流れを個別プロジェクトに実装することで、他の顧客向けのオプションがあることを隠せるのではないかと思います。

    # 「シンボリック リンク」と書きましたが、Windows では「接合ポイント」とか、「再解析ポイント」です。
記事No.79190 のレス / END /過去ログ135より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -