2017-05-08 4 views
0

親プロジェクトから呼び出されるメソッドを持つクラスライブラリがあります。メソッドが呼び出されたときに、クラスライブラリに埋め込みリソースをロードします。.NETコアのクラスライブラリ内からリソースをロードする

例:コンソールアプリケーションには、TestClassというクラスライブラリがあります。これにはtest.txtという埋め込みリソースがあります。私がTestClassでメソッドを呼び出すと、私はリソースtest.txtを読みたいと思います。

Console App 
    | TestClass.dll 
     | test.txt 

私はこのコードを試してみました:

var assembly = Assembly.GetEntryAssembly(); 
var stream = assembly.GetManifestResourceStream("TestClass.test.txt"); 

をしかし、これはコンソールアプリケーションではなく、クラスライブラリを検索します。

私はこの例を見て:http://keithelder.net/2007/12/14/how-to-load-an-embedded-resource-from-a-dllenter link description hereですが、これはクラスライブラリ自体からではなく、親アプリケーションからファイルをロードしています。

答えて

1

GetEntryAssembly()の代わりに、以下のコードでクラスライブラリをアセンブリとして取得します。

public string GetResource() 
{ 

    var assembly = typeof(TestClass.Class1).GetTypeInfo().Assembly; 

    // This shows the available items. 
    string[] resources = assembly.GetManifestResourceNames(); 

    var stream = assembly.GetManifestResourceStream("TestClass.test.txt"); 

    using (var reader = new StreamReader(stream)) 
    { 
     return reader.ReadToEnd(); 
    } 

} 
関連する問題