我正在使用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。 我认为我使用错误的方式来访问资源,但我不知道:(
如果有人可以帮助我会很好:)
答案 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");