3

今、私はクラスにそれらのほんの一握りを持っています:

string upgrade_file 
    = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(
        Assembly.GetExecutingAssembly().GetName().Name 
        + ".schemas.template.db_upgrades.txt")
        ).ReadToEnd();

埋め込みリソースへのアクセスを簡素化するためのラッパー関数を作成できます (必要に応じて作成します) が、.Net を使用してネイティブにアクセスするためのより簡単で洗練された方法はありますか?

たとえば、GetManifestResourceStream(...) が静的でないのは奇妙だと思います。別の例: テキスト ファイルのストリームではなく文字列を返すメソッドはありますか?

更新 1 :

明確にするために、サブディレクトリにテキストファイルがあり、それが必要です:

  1. これらのファイルは個別のファイルのままです (たとえば、個別にソース管理できるようにするため)。
  2. これらのファイルは、埋め込みリソースのままです。つまり、アセンブリでコンパイルされます。

今、私はこの画像に示すようにこれをやっています: ここに画像の説明を入力

更新 2 :

ファイルへのアクセスを簡素化するために、回答から何も使用できませんでした。

他の誰かが役に立つかもしれない場合に備えて、私が現在使用しているヘルパーメソッドを次に示します。

/// <summary>
/// Get the content of a text file embedded in the enclosing assembly.
/// </summary>
/// <param name="resource">The "path" to the text file in the format 
/// (e.g. subdir1.subdir2.thefile.txt)</param>
/// <returns>The file content</returns>
static string GetEmbeddedTextFile(string resource)
{
    return new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(
        Assembly.GetExecutingAssembly().GetName().Name + "." + resource)).ReadToEnd();
}
4

4 に答える 4

0

Resource1という名前のプロジェクトに、TXT ファイルとバイナリ ファイルを含むリソース ファイルがあります。
私はできる

string str = Resource1.TxtFile;
byte[] file = Resource1.BinaryFile;
于 2012-04-12T21:23:08.107 に答える
-2
string upgrade_file  = Resources.db_upgrades.txt
于 2012-04-12T21:25:26.613 に答える