我只是想查看资源名称,但什么也没有出现。
我在 Visual Studio 2010 中制作并编译了一个 C++/CLI(托管)DLL,并添加了一些资源文件作为测试(一个图标和一个位图)。我已经检查过 PE Explorer,资源肯定在那里。
我的简单代码:
Assembly asm = Assembly.LoadFrom("C:\\test.dll");
String[] res = asm.GetManifestResourceNames();
我知道 DLL 已加载,因为当我调试时,我可以看到“asm”变量中的所有信息。我也可以从 DLL 导入数据(使用 MEF)。
因此,DLL 具有资源,并且代码肯定正在加载程序集。但为什么我的“res”变量总是返回空字符串列表?
编辑: 我创建了一个 C# 类库 (.dll),其中包含仅用于测试的资源。现在它起作用了!但仍然在我的 C++/CLI DLL 中没有出现资源。不知何故,它们在 DLL 中,但代码无法访问它(仅在 C++ DLL 中)。也许它与托管/非托管代码有关,但由于我是用 CLR 编译它,所以情况似乎并非如此。有什么建议么?
解决方案 我明白了!以防万一有人需要。
根据这些主题:
在 C++/CLI 项目中嵌入资源
和
http://bytes.com/topic/net/answers/571530-loading-markup-xamlreader-load-resource-file#post2240705
问题正是 C++/CLI 的问题。您必须在项目属性的链接器选项卡下的输入项中添加它。现在它似乎工作正常。谢谢