2009-07-30 7 views
0

で整理するスタンドアロンの小さなC#プロジェクトでは、実行時にドメイン固有の値を提供するために必要な適度な数(約100)の(XML)ファイルが必要です。それらはユーザーに見える必要はありません。しかし、手動で行う準備ができている(つまり、特定のツールを想定していない、特にシステム外で作成されている可能性がある)場合は、追加したり、時折更新したりする必要があります。プロジェクト固有の読み取り専用ファイルをc#

私はそれらが再配置可能である(すなわち相対ファイル名を使用する)ことを望みます。それらを整理するためにどのようなオプションを検討し、それらを開いて読むのに必要なコールは何ですか?

プロジェクトは本質的にスタンドアロンです(Webサービス、データベース、またはその他のサードパーティのアプリケーションには関係ありません)。それは少数の名前空間に編成され、ファイルのすべての論理を単一の名前空間に限定することができます。

========= わかりません。私はもう一度やり直します。 Javaアプリケーションでは、最後の* .exeではなく、クラスパスに関連して読み込まれるリソースファイルを含めることができます。私はC#で同様のことをする方法があると信じています。

========= 私はRESXに関連するものを使うべきだと思います。 (RESXファイルとxmlデータhttps://stackoverflow.com/posts/1205872/edit)を参照してください。私はresxファイルに文字列を入れることができますが、これは面倒でエラーが発生しやすく、適切な場所にコピーすることをお勧めします。

私は不明であることを申し訳なく思っていますが、私はどのように質問するかについてはあまりよく分かりません。

========= 質問は(C# equivalent of getClassLoader().getResourceAsStream(...))に非常に近いようです。私はVisualStudioでファイルを追加できるようにしたいと思っています。私の質問はどこに置くのですか?リソースはどのように指定するのですか?

+2

C#プロジェクトとは、サービス、Webプロジェクト、Winプロジェクトなど、多くのことを意味します。より具体的にしてください。 –

+0

ありがとうございます - 私は範囲を明確にしようとしました –

答えて

1

サブフォルダを実行可能ファイルの相対パスに置き換えた場合、.\Configと入力すると、File.ReadAllText(@"Config\filename.xml")でアクセスできます。

あなたはASP.NETアプリケーションを持っている場合は、関係なく、...特別App_Dataフォルダの中にそれらを入れて、あなたが勝つのフォーム、またはWebプロジェクトを持っているかどうか、私はまだ不明だFile.ReadAllText(Server.MapPath("~/App_Data/filename.xml"))

0

でそれらにアクセスすることができ、相対ファイル名の使用はそれらを再配置可能にする必要はありません。 web.configファイルまたはapp.configファイルのappSettingsセクションにxmlファイルへのフルパスを含むエントリを追加することをお勧めします。それらが移動された場合は、設定ファイルを変更するだけです。

<!-- app/web.config ---> 
<appSettings> 
     <add key="filelocation" value="c:\xmlfiles"/> 
</appSettings> 

//c# code (in ASP.NET app, for example) 
using System.IO; 
using System.Xml.Linq; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string path = ConfigurationManager.AppSettings["filelocation"]; 
     DirectoryInfo di = new DirectoryInfo(path); 
     List<XDocument> xmlDocs = new List<XDocument>(); 
     foreach (FileInfo fi in di.GetFiles()) 
     { 
      xmlDocs.Add(XDocument.Load(fi.FullName)); 
     } 
    } 
} 

もちろん、xmlファイル名はわかっているかもしれないし、わからないかもしれないので、まったく同じように読み込んで読み込まないかもしれません。

あなたの場合は、ASP.NETサイトを持っている場合は、あなたのApp_Dataフォルダに入れておくのが適切です(複数のサーバには決して存在しないと仮定します)。設定ファイルに「〜/ App_Data」と記載しておくと、Server.MapPath()でダーリンのように完全なパスに変換することができます。

関連する問題