gpt4 book ai didi

c# - 从 .net 库中读取文本文件资源

转载 作者:行者123 更新时间:2023-12-02 22:34:58 24 4
gpt4 key购买 nike

我有一个用于 wpf mef 应用程序的库。该库中包含许多文件。其中之一是 app.js。

如何从库中以字符串形式读取 app.js。

PS:从早期的代码中,我可以使用下面的代码访问/创建位图图像:

private readonly BitmapImage _starImageSmall = new BitmapImage(new Uri("pack://application:,,,/MyFirstExtension;component/Star_16x16.png", UriKind.Absolute));

生成Uri后,如何将流作为系统流访问?

最佳答案

这段代码从未让我失望过:

private Stream GetEmbeddedResourceStream(string resourceName)
{
Assembly assy = Assembly.GetExecutingAssembly();
string[] res = assy.GetManifestResourceNames();
for (int i = 0; i < res.Length; i++)
{
if (res[i].ToLower().IndexOf(resourceName.ToLower()) != -1)
{
return assy.GetManifestResourceStream(res[i]);
}
}
return Stream.Null;
}

此代码块需要注意三点:

  • 此 block 在执行程序集(Assembly.GetExecutingAssembly())上工作,调用程序集或任何其他程序集;更改它以满足您的需要(参见下面的替代方案)
  • resourceName 应该是 仅文件名(例如,如果您的文件保存在 resources/myRes.bin,您调用 GetEmbeddedResourceStream ("myRes.bin")
  • 您的资源必须将其“资源类型”设置为“嵌入式资源”

但是,如果您希望代码适用于任意程序集,您可以将代码块更改为:

private Stream GetEmbeddedResourceStream(string resourceName)
{
return GetEmbeddedResourceName(resourceName, Assembly.GetExecutingAssembly());
}
private Stream GetEmbeddedResourceStream(string resourceName, Assembly assembly)
{
string[] res = assembly.GetManifestResourceNames();
for (int i = 0; i < res.Length; i++)
{
if (res[i].ToLower().IndexOf(resourceName.ToLower()) != -1)
{
return assembly.GetManifestResourceStream(res[i]);
}
}
return Stream.Null;
}

关于c# - 从 .net 库中读取文本文件资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11590582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com