[英]C# GetManifestResourceStream returns null
我正在使用C#WinForms應用程序。 我需要嵌入一個.dll,我嘗試將此文件從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。 我認為我使用錯誤的方式來訪問資源,但我不知道:(
如果有人可以幫助我會很好:)
如果您已將構建操作正確設置為“嵌入式資源”,則問題很可能是資源的名稱。
它應該是命名空間+文件名; 你試過FormNamespace.Newtonsoft_Json.dll
嗎?
否則,您可以嘗試執行GetManifestResourceNames方法並查看它返回的內容。
您應該提供資源的所有路徑。 示例[DLLNAME或NameSpace]。[ResourceName]如果資源位於Res文件夾,則[DLLNAME或NameSpace]。[Res.Resource.txt]
如果您正在使用Assembly.GetExecutingAssembly(),那么您將獲得更好的資源路徑,執行以下操作:
var assembly = Assembly.GetExecutingAssembly();
var s = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.Json.dll");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.