0

私のスタンドアロンの小さめのC#プロジェクトには、実行時にドメイン固有の値を提供するために必要な中程度の数(ca 100)の(XML)ファイルが必要です。それらはユーザーに表示される必要はありません。ただし、手動で行う準備ができているものを追加したり、時々更新したりする必要があります(つまり、特定のツールは想定していません。特に、システムの外部で作成される可能性があるためです)。

再配置可能(つまり、相対ファイル名を使用する)にしたいと思います。それらを整理するためにどのようなオプションを検討する必要があり、それらを開いて読むために必要な呼び出しは何でしょうか?

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

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

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

不明で申し訳ありませんが、質問の仕方がよくわかりません。

=========質問は(getClassLoader()。getResourceAsStream(...)と同等のC#)に非常に近いようです。VisualStudioでファイルを追加できるようにしたいのですが、私の質問は、ファイルをどこに配置し、それらがリソースであることをどのように示すかです。

4

3 に答える 3

1

それらを実行可能ファイルに関連するサブフォルダーに配置する場合は、で.\Configアクセスできると言いますFile.ReadAllText(@"Config\filename.xml")

ASP.NETアプリケーションを使用している場合は、それらを特別なApp_Dataフォルダー内に配置して、次のコマンドでアクセスできます。File.ReadAllText(Server.MapPath("~/App_Data/filename.xml"))

于 2009-07-30T11:13:22.717 に答える
0

http://www.attilan.com/2006/08/accessing_embedded_resources_u.phpに詳細な回答があります。ファイルはEmbeddedResourceとして指定する必要があるようです。私はまだこれを機能させていませんが、それが私が望んでいることです。

于 2009-07-30T15:11:18.837 に答える
0

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

<!-- 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」をリストする場合は、darinがServer.MapPath()で行ったように、それをフルパスに変換することに注意してください。

于 2009-07-30T13:16:55.820 に答える