2009-03-16 6 views
5

私は、C#Settingクラスの値に基づいてファイルを読み込むプロジェクトを持っています。しかし、この値はマシンからマシンに変わり、IDはインストーラで設定されているのではなく、ファイルがどこにあるのでしょうか?簡単な方法はありますか?C#設定xmlファイルの場所

これは、Visual Studioアドインではないスタンドアロンのプログラム

+0

私は間違っているかもしれませんが、より多くの情報を提供する必要があると思います。 – inspite

+0

"C#Settingsクラス"とは何ですか?その用語は非常にあいまいです。あなたの質問を明確にしてください。 – Cerebrus

+0

私はそのmy.settingsだと思いますか? – Shoban

答えて

3

あなたの投稿からは、Windowsアプリケーションがあるようですか?アプリケーション構成に初期値を格納することができます。Visual Studioでインストーラを作成し、プロジェクトの最初のインストール時にファイルに値を書き込むカスタムアクションを作成できます。

+0

正当な 'デフォルト'はありません。あなたがいる場所によっては3つありますが、インストール時にカスタムアクションを書くにはどうしたらいいですか? –

+0

http://www.codeproject.com/KB/install/SetupAndDeployment.aspx – abmv

0

レジストリやINIファイルまたは最高のあなたに合ったどんなXMLファイルです。

+0

私が知っている限り、それはシステムフォルダに保存されたxmlファイルですが、どこに格納されているのかわかりません。 –

0

ベストオプションはレジストリです。アプリケーションをインストールするにはAdminアクセスが必要です。インストール中にレジストリに書き込むことは問題にはなりません。

さらに、iniファイルまたは設定ファイルを誤って削除した場合、プログラムが動作を停止する可能性があります。

+0

設定ファイルの削除はほとんどありませんが、設定が曖昧になっている場合、エンドユーザにパスを尋ねるダイアログがポップアップしますが、これは望ましいUIのケースではないため、フェールセーフであり、主な手段ではありません。セットアップ。 –

1

デザイナーが生成した設定(.settingsファイル)についてお話していると思いますか?

通常、正確なパスには何らかのハッシュ(チェックthisリンク)が含まれています。私は通常、私がより多くの自由を与えるを使用してxmlからシリアル化する自分の設定クラスを持っています(C#設定ファイルではカスタムenumを追加できないと思うのですが、単に.settingsファイルに追加するよりも)。

ただし、インストール時に値を設定する必要はありません。たとえば、最初にtrueに設定したFirstStartupの設定を追加することができます。これは、初めてアプリケーションを起動したときに読むことができ、falseに設定します。こうすることで、「最初の起動」を検出したときにデフォルト設定を行うことができます。

+0

実際にはこの種の設定ですが、私はこのダイアログを実行する可能性が最も高いのですがエンドユーザーであり、それを設定する人ではないので、この質問の全体点です。 –

+0

入手しました。管理者とのやりとりが必要であることもわかりませんでした。その場合は、おそらくカスタムのSettingsProviderを実装しようとすることができます。 しかし、私はすでにこれらの問題を抱えていて、Load/Saveメソッドを使って単純なシングルトンクラスを作る方が簡単だと決めました。 – Groo

1

インストーラの最後には、カスタムアクションが必要です。あなたはアプリケーションを配備するためにどの技術を使用しているかについて言及していないので、具体的な指針を控えることにします。

App.configの値を設定することをおすすめします。これはアプリケーションと同じディレクトリにMyApplication.exe.configという名前のxmlファイルです。すでにインストーラーにない場合は、インストーラーに追加してください。設定を取得し、あなたのコードでは

<configuration> 
    <appSettings> 
    <add key="MySetting" value="My Value"/> 
    </appSettings> 
</configuration> 

:あなたのインストーラでは、新しい設定を追加

String setting = ConfigurationSettings.AppSettings["MySetting"]; 

を、これはマシン全体の設定である場合は、このインストーラは、これを設定するための適切な場所です。最初の実行時に実行すると、アプリケーションを実行する最初のユーザーが制限付きのアクセス権を持つユーザーであれば、ファイルとディレクトリのアクセス許可に関する問題が発生します。

+0

しかし、この値は静的ではなく、ネットワークごとに必要な値が変更され、展開するネットワークが複数存在します。 –

+0

http://www.codeproject.com/KB/install/SetupAndDeployment.aspx –

-2

私のケースは異なります、私のプロジェクトは、app.configファイルを持つクラスライブラリ(dll)です。私は4つのアプリケーション設定変数(タイトル、URL、制限、レート)を作成することに決めました。これを作成するには、プロジェクトを右クリック - >プロパティ - >設定をクリックします。あなたはこのコマンドを使用してコードで取り出すことができるこの値 - > Settings.Default.title、...など

問題は、私はインスタンスが独自の設定を持つことができるようしたい、私はこのライブラリから5つのオブジェクト(例えば、同じオブジェクトをMyProject.MyClass)インスタンス化されるとしましょう。私はインスタンスのそれぞれがXML設定ファイルを持っている可能性があることを意味します。これはできますか?

2

のconfigureファイルは、しかし、それが最善ではありません、あなたが求めているものを行うための最も簡単な方法です。実際には、このような場合に.configファイルを使用しないことをお勧めします。

  • ユーザーが「アップデート」をインストールするたびに、既存の変更を上書きする危険があります。

  • 一部の企業は、の.configファイルのポリシーの制限がある場合があります。

  • ユーザーが簡単に別のPCから自分の設定を移動することはできません。

XML、MS-Access、レジストリ、またはテキストファイルを使用してユーザー設定を保存すると、.configファイルを使用するよりも便利です。

0

あなたは、これは、企業環境のためであると述べました。グループポリシーの管理用テンプレートを作成して、レジストリに既定値を設定することができます。デフォルトがまだ設定されていない場合、プログラムはそのレジストリ値を照会することができます。

0

興味のある人のための元の質問のビット「どこにファイルが配置されている」と答えるために(私は、問題の「設定ファイル」が「新しい項目の追加」ダイアログから利用可能な「設定ファイル」項目であると仮定しています)。

C:\ Users \ユーザー[ユーザー] \のAppData \

ローカルフォルダ構造Win7の(そしておそらく他のすべてのもの)の設定ファイルは、パスの下に生成されて

ここからあなたのAssemblyInfoとビルド情報に依存し、 "AssemblyCompany"フィールド(入力されている場合)は一番上のフォルダに使用され、その下にはアプリケーションの実行可能ファイル名をコピーしたフォルダと、最後にビルドが続きますファイル(「* .config」という名前)次のように私の場合は

、完全なパスは次のとおりです。

C:\ Users \ユーザー[ユーザー] \のAppData \ローカル\ [COMPANY_NAME] \ Application.exe_StrongName_zx0v1qxyoass4d0z3mtwe3vbrhaehkjg \ 0.0.5812.21662

をuser.config \
関連する問題