簡體   English   中英

如何檢索嵌入的xml資源?

[英]How can I retrieve an embedded xml resource?

我在我的類庫中添加了一個XML文件作為嵌入式資源,方法是使用Visual Studio中的項目屬性訪問,然后使用Resources | 添加資源| 添加現有文件...

我試圖使用以下代碼訪問該文件,但我不斷返回null引用。 有人有主意嗎?

var path = Server.MapPath("~/bin/MyAssembly.dll");
var assembly = Assembly.LoadFile(path);
var stream = assembly.GetManifestResourceStream("MyNamespace.filename.xml");

我發現在Visual Studio中使用項目屬性對話框的“資源”選項卡要容易得多。 然后,您通過以下方式生成對資源的強類型引用:

Properties.Resources.Filename

GetManifestResourceStreamMSDN頁面提供了以下注釋:

如果訪問另一個程序集中的私有資源並且調用者沒有帶有ReflectionPermissionFlag.MemberAccess標志的ReflectionPermission,則此方法返回空引用(在Visual Basic中為Nothing)。

您是否在組件中將資源標記為“公共”?

我發現這篇文章很好地解釋了如何設置它: http//www.devx.com/dotnet/Article/10831/1954

在這種情況下可能有幫助的一件事是使用不同的方法來確定嵌入資源的位置。

  • GetEntryAssembly:使用此方法引用為啟動當前進程而運行的可執行文件。 為Windows窗體應用程序設置了入口程序集,但對於大多數其他應用程序(例如,Web項目),GetEntryAssembly返回'nothing'(或在C#中為null)。
  • GetExecutingAssembly:使用此方法引用執行代碼所在的同一程序集。
  • GetCallingAssembly:使用此方法引用包含調用當前方法的代碼的程序集。 如果編寫通用代碼來讀取嵌入資源位於調用程序集中的共享程序集內的嵌入資源,則此方法很有用。

我個人更喜歡這種方法而不是使用“資源”選項卡,因為它允許我使用其他工具向項目添加資源以包含在編譯中。 我不必使用此工具的GUI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM