teratail header banner
teratail header banner
質問するログイン新規登録
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

2回答

5928閲覧

app.configの不要データ削除

dotkind

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

2クリップ

投稿2019/03/08 02:16

編集2019/03/08 02:29

0

2

Windows Form(C#)でのフォームアプリケーション作成について質問です。

ソフトの設定値を保持する仕組みApplicationSettingsBaseについて勉強中です。

設定の読み込みおよび更新は理解できました。
また、EXEのバージョンが変わった時の対応についても、次のサイトを参考に理解ができました。
前バージョンの設定を引き継ぐ方法(C#用メモ)

質問:
EXEのバージョンが上がった時に、過去バージョンの設定ファイルを消す方法はありますか?
または、保存先をバージョン番号に依存しない所へ変更できますか?

理由:
使わなくなったファイルがずっと残ったままなのは気持ち悪く感じます。
configファイルは小さなテキストファイルなので、容量的には軽いので大きな害は無いと思いますが。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ApplicationSettingsBaseでは保存先の変更は行えなかったかと思います。
設定自身に保存先のフォルダを記憶しておくようにして、アップグレードする際に
前のバージョンの値を読みだして、アップグレード後にそのフォルダを削除するようにすればいいのではないでしょうか。

C#

1// 前バージョンからのUpgradeを実行していないときは、Upgradeを実施する 2// appsはApplicationSettingsBaseを継承したクラスです。 3if (apps.IsUpgraded == false) 4{ 5 string prevpath = ""; 6 // 前バージョンのconfigファイルのパスを取得 7 if (!(apps.GetPreviousVersion("ConfigPath") is null)) 8 { 9 prevpath = apps.GetPreviousVersion("ConfigPath").ToString(); 10 11 // Upgradeを実行する 12 apps.Upgrade(); 13 14 // 「Upgradeを実行した」という情報を設定する 15 apps.IsUpgraded = true; 16 17 // 現行バージョンのパスを設定する 18 Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); 19 apps.ConfigPath = System.IO.Path.GetDirectoryName(conf.FilePath); 20 21 // 現行バージョンの設定を保存する 22 apps.Save(); 23 24 // 前のバージョンのフォルダを消す 25 System.IO.Directory.Delete(prevpath, true); 26 } 27 28}

ただ、ここまでするのであれば、他の方法で保存したほうがスッキリするのではないかと思います。

投稿2019/03/08 13:34

YAmaGNZ

総合スコア10674

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dotkind

2019/03/08 23:36

ありがとうございます! 確かにここまでするなら、自作で設定値の管理クラスを作った方が便利ですね! そちらで検討いたします。
YAmaGNZ

2019/03/08 23:59

一応IsUpgradedを実装しましたが、前のバージョンのフォルダを消すのであれば、GetPreviousVersionで得られるものがnullか判断するだけで大丈夫な気がします。
guest

0

こういうことですか?

「アプリケーション構成ファイル」を編集する

テキストファイルなので自分で好きに書き換えたらという気もしますが。

投稿2019/03/08 03:26

Zuishin

総合スコア28675

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dotkind

2019/03/08 23:36

ありがとうございます。 既存の機能を使って簡単に書き換えられればと思っておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問