我有一个类库,它有一个从父项目调用的方法。我希望类库在调用方法时加载嵌入的资源。
示例:控制台应用有一个名为 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 链接描述在这里,但这是从父应用程序加载文件,而不是从类库本身加载文件。
下面的代码不使用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();
}
}