C#でプロジェクト固有の読み取り専用ファイルを整理する方法
-
05-07-2019 - |
質問
スタンドアロンの小さなC#プロジェクトには、実行時にドメイン固有の値を提供するために必要な中程度の数(約100)の(XML)ファイルが必要です。ユーザーに見える必要はありません。ただし、手動で行う準備ができているそれらを追加または更新する必要があります(つまり、特定のツールは想定していません。特に、システムの外部で作成される可能性があるため)。
それらを再配置可能にする(つまり、相対ファイル名を使用する)ことを望みます。それらを整理するためにどのオプションを検討する必要があり、それらを開いて読み取るために必要な呼び出しは何ですか?
プロジェクトは基本的にスタンドアロンです(Webサービス、データベース、またはその他のサードパーティアプリケーションとは関係ありません)。少数の名前空間に編成され、ファイルのすべてのロジックを単一の名前空間に限定できます。
========== 不明確で申し訳ありません。再試行します。 Javaアプリケーションでは、最後の* .exeではなく、クラスパスに関連して読み取られるリソースファイルを含めることができます。 C#で同様のことを行う方法があると思います。
========== RESXに関連するものを使用するべきだと思います。 (RESXファイルとxmlデータ https://stackoverflow.com/posts/1205872/edit )を参照してください。 resxファイルに文字列を挿入できますが、これは面倒でエラーが発生しやすいため、適切な場所にコピーすることをお勧めします。
不明な点は申し訳ありませんが、質問の仕方がわかりません。
========== 質問は( getClassLoader()。getResourceAsStream(...)と同等のC#に非常に近いようです。 )。 VisualStudioでファイルを追加できるようにしたい-私の質問は、それらをどこに配置し、それらがリソースであることをどのように示すかです。
解決 3
http://www.attilan.com/2006に詳細な回答があります。 /08/accessing_embedded_resources_u.php 。ファイルをEmbeddedResourceとして指定する必要があるようです。これはまだ動作していませんが、それは私が欲しいものです。
他のヒント
実行可能ファイルに関連するサブフォルダーに配置する場合、たとえば。\ Config
を使用すると、 File.ReadAllText(@" Config \ filename.xml"でアクセスできます。 )
。
ASP.NETアプリケーションがある場合、特別な App_Data
フォルダー内に配置し、 File.ReadAllText(Server.MapPath("〜/ App_Data / filename。 xml"))
Winフォームを持っているのか、Webプロジェクトを持っているのかはまだわかりません...とにかく、相対ファイル名を使用して再配置可能にする必要はありません。 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フォルダーに配置するのが完全に適切であると思われます(複数のサーバーに配置されることはないものとします)。 &quot;〜/ App_Data&quot;をリストする場合は注意してくださいあなたの設定ファイルでは、darinがServer.MapPath()で行ったようにそれをフルパスに変換することを知っています。