【发布时间】:2010-05-05 06:51:55
【问题描述】:
我有两个 Visual Basic 2008 项目 - 一个是类库项目,另一个是 Windows 窗体项目。在类库项目中,我在项目资源(项目属性>资源选项卡)中定义了一些字符串。
我构建了该类库项目并从调试文件夹中获取 DLL 文件,并将其作为参考添加到我的 Windows 窗体项目中。
如何从引用的 DLL 文件中读取这些字符串?
【问题讨论】:
我有两个 Visual Basic 2008 项目 - 一个是类库项目,另一个是 Windows 窗体项目。在类库项目中,我在项目资源(项目属性>资源选项卡)中定义了一些字符串。
我构建了该类库项目并从调试文件夹中获取 DLL 文件,并将其作为参考添加到我的 Windows 窗体项目中。
如何从引用的 DLL 文件中读取这些字符串?
【问题讨论】:
虽然您可以按照 ho 的建议动态加载 DLL,但您也可以使用引用。事实上,我建议您使用引用,除非您对动态加载资源程序集有特殊要求。
关于访问资源,您需要做一些事情。
在资源程序集中,您需要确保资源是公开的。默认情况下,资源设置为内部,这意味着您不会在 winforms 应用程序中看到资源。双击 Properties\Resources.resx 打开资源视图。在顶部工具栏中,您将在组合框下拉列表旁边看到一个标签“访问修饰符”。将选择更改为公开。
您需要从表单应用程序中引用程序集。你已经说过你已经这样做了。请注意,更好的方法是创建一个包含两个项目的解决方案。然后在表单应用程序中选择添加参考。单击顶部的“项目”选项卡。双击资源 DLL 项目名称。这比直接引用调试 DLL 效果更好,因为这意味着如果您在表单应用程序中的发布版本和调试版本之间进行更改,它将自动构建资源程序集的匹配发布/调试版本。
添加引用后,您可以简单地从资源 DLL 中引用类型,例如
ResourceDLLNamespace.Properties.Resource.ResourceName
请注意,如果您为表单应用程序和资源 DLL 使用相同的命名空间,则需要注意类型名称冲突。在这种情况下,您的表单应用程序都可以访问它自己的 Properties.Resources 类以及资源 DLL 的类。你可以做两件事来避免这种情况:
-多诺万
【讨论】:
我认为您只需使用 System.Reflection.Assembly.Load 加载另一个程序集,然后使用 System.Resources.ResourceManager 的构造函数来获取程序集。
请注意,我认为它不需要参考即可。
【讨论】: