none
ソリューション同士でMy.Settings.*の設定情報を移植する方法 RRS feed

  • 質問

  • VB2005Expressを利用しております。

    最近仕事で開発する一連のフォームやクラス群を1つのソリューションにまとめて、個別の受託アプリを開発する際は、

    1)新規ソリューションの作成
    2)元ソリューションのファイルを「既存ファイルの追加」で新規ソリューションに追加
    3)参照設定他、手作業で追加

    という手順を繰り返しているのですが、私は個別アプリごとの設定はMy.Settings.*の機構を使って管理する方法を取っているのですが、
    この設定の移植のみ、どうしてもVB2005ExpressのGUI画面の機能頼りで1点ずつ登録するしかできず、
    もう少し効率よくできないかと悩んでいます。

    ためしに app.config と Settings.Designer.vb に直接元ソリューションのそれから新規ソリューションの同じファイルに、
    直接追加分だけコピペしてみたりしましたが、1度でもGUI画面の「設定」を開くと、コピペ前の情報しか表示されず、
    さらに Settings.Designer.vb の値も戻されてしまいます。#app.config は無視されるだけで済む

    何か良い回避策はありませんでしょうか。

    もしくは根本的に、IDEの機能でマクロっぽい操作ができて一括登録ができたりとかしませんでしょうか。

    2009年10月7日 2:11

回答

  • 試してみました。Settings.settings、Settings.Designer.vb、app.configの3つのファイルをそれぞれの場所にコピーしたところ、設定がうまく移りました。どうやらSettings.settingsをコピーしなければならないようです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク wataru.kato 2009年10月10日 5:41
    2009年10月7日 5:58
    モデレータ

すべての返信

  • 試してみました。Settings.settings、Settings.Designer.vb、app.configの3つのファイルをそれぞれの場所にコピーしたところ、設定がうまく移りました。どうやらSettings.settingsをコピーしなければならないようです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク wataru.kato 2009年10月10日 5:41
    2009年10月7日 5:58
    モデレータ
  • >trapemiya 様

    ご指摘ありがとうございます。
    Settings.settings は、VB2005 Express のGUI操作画面からは直接コード内容が閲覧できず(クリックしても「設定」画面が出てしまう)、
    つい直接ファイルの中身をのぞくのを忘れていました。

    ご指摘のとおり、Settings.settings のファイルも移植すると移せました。
    中身を見ると、このファイルの内容がズバリ「設定」画面の表示内容のようですね。xml形式でした。
    #本当は「Userスコープ」の値はまたさらにLocalSettingsの方に4つめとして保存されているのでしょうが、
    #この場合はプロジェクトの移植が目的なので無視してます

    補足:

    「既存ソリューション別に複製して利用したいなら、普通にコピーしてGUI操作でソリューション名、アプリケーション名、プロジェクト名などをリネームすればよいのでは?」

    という考え方もあると思いますが、これも以前試してみた際、
    すべてリネームしてもソリューションファイルが保存されている階層と、同階層に保存されているプロジェクト毎のルートフォルダ名だけが残念ながらリネームされず、
    「なんとなくここだけ元プロジェクト名が残るのが気持ち悪いな…」と思いまして、上記のようにわざわざ新規ソリューションを作ってから手作業で移植、という
    手間のかかる手段をずっととっていました。

    今回改めて調べてみまして、プロジェクト毎のルートフォルダも

    1)フォルダ名を変更する
    2)*.slnファイルをテキストエディタで開き、以下の記述:
    Project("{********-****-****-****-************}") = "プロジェクト名", "(プロジェクトのルートフォルダ)\プロジェクト名.vbproj", "{********-****-****-****-********}"
    EndProject
    

    の(プロジェクトのルートフォルダ)の値も同じように変更しておけばリネーム後のパスの整合性が維持できることがわかりました。

    なので、もし「設定」の内容がほとんどそのままのソリューションの移植ならば普通にソリューションをコピーして行く方が楽なようです。

    とはいえ「設定」だけ移植したいケースもありまして、状況に応じて使い分けたいと思います。

    2009年10月10日 5:41