C#GetManifestResourceStream返回null

时间:2014-03-19 12:51:59

标签: c# .net stream embedded-resource

我正在使用C#WinForms应用程序。我需要嵌入一个.dll,然后尝试" export"这个文件从Resource到HDD。

我使用默认表单资源...

System.IO.Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("FormNamespace.Form1.Newtonsoft_Json");

文件名是Newtonsoft.Json.dll,我也尝试过:

System.IO.Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("FormNamespace.Form1.Newtonsoft.Json.dll");

两者都没有效果。 s始终为null。 我认为我使用错误的方式来访问资源,但我不知道:(

如果有人可以帮助我会很好:)

3 个答案:

答案 0 :(得分:5)

如果您已将构建操作正确设置为"嵌入资源",则问题很可能是资源的名称。

它应该是命名空间+文件名;你试过FormNamespace.Newtonsoft_Json.dll吗?

否则,您可以尝试执行GetManifestResourceNames方法并查看它返回的内容。

答案 1 :(得分:0)

您应该提供资源的所有路径。例 [DLLNAME或NameSpace]。[ResourceName] 如果资源位于Res文件夹那么 [DLLNAME或NameSpace]。[Res.Resource.txt]

答案 2 :(得分:0)

如果您正在使用Assembly.GetExecutingAssembly(),那么您将获得更好的资源路径,执行以下操作:

var assembly = Assembly.GetExecutingAssembly();
var s = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.Json.dll");