有没有办法公开强类型资源文件(而不是内部文件)?

时间:2020-03-06 14:47:50  来源:igfitidea点击:

这是我想做的:

我想创建一个包含我的资源文件(即UI标签和诸如此类)的库项目。然后,我想在我的UI和测试中都使用资源库。 (即,基本上,我在多个项目中引用的资源都有一个共同的位置。)

不幸的是,由于StronglyTypedResourceBuilder(为资源生成代码的.Net类)默认使资源文件为内部文件,因此我无法从另一个项目(即,我的UI或者测试)中引用库中的强类型资源,而不会跳转通过箍(即类似于此处描述的内容,或者编写公共包装器类/函数)。

不幸的是,这两种解决方案都消除了我保留强类型引用的能力。

有没有人找到创建可以从多个项目引用的强类型.Net资源的简单方法?

我宁愿避免使用构建事件来完成此操作(即,执行诸如将"内部"的所有实例替换为"公共"的操作),但是如果我找不到,那基本上就是我的后备计划答案..

解决方案

Visual Studio 2008允许我们选择生成的资源类是内部的还是公共的。还有ResXFileCodeGeneratorEx,应该为Visual Studio 2005做到这一点。

在数据集设计器中,在可见的属性窗口的情况下,有一个"修饰符"属性。对于数据集,它可能是内部的。

我不知道是否存在将所有新数据集默认设置为公开的设置。

不知道我们使用的是Visual Studio的哪个版本,因此我将为其中一个放置步骤:

VS 2008在设计视图中打开resx文件时,"添加资源"和"删除资源"旁边的顶部有一个选项,称为"访问修饰符",它是一个下拉列表,我们可以在其中将生成的代码从内部更改为公共。

VS 2005我们没有像VS 2008中那样生成代码的选项。由于此令人头疼,所以添加了此功能。虽然有解决方法。我们可以使用类似此工具的第三方生成器,也可以在AssemblyInfo.cs中使用InternalsVisibleTo属性添加可以访问资源库的内部类的项目。