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

时间:2008-09-26 17:51:16

标签: c# asp.net .net-2.0 resources strong-typing

这是我想做的事情:

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

不幸的是,因为StronglyTypedResourceBuilder(生成资源代码的.Net类)默认使资源文件成为内部资源,所以我无法从另一个项目(即我的UI或测试)中引用库中的强类型资源,没有跳过箍(即类似于描述here的东西,或编写公共包装类/函数)。

不幸的是,这两种解决方案都使我无法保持强类型参考。

有没有人找到一种直接的方法来创建可以从多个项目中引用的强类型.Net资源?

我宁愿避免使用构建事件来实现这一目标(即,做一些事情,比如将'内部'的所有实例替换为'public',但如果可以的话,这基本上是我的后备计划找不到答案..

3 个答案:

答案 0 :(得分:37)

不确定您使用的是哪个版本的Visual Studio,因此我将为其中一个版本添加步骤:

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

VS 2005 - 你没有像VS 2008那样生成代码的选项。由于这个头痛,这是一个添加的功能。虽然有工作。您可以使用像此tool这样的第三方生成器,也可以使用AssemblyInfo.cs中的InternalsVisibleTo属性添加可以访问资源库内部类的项目。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

从数据集设计器和属性窗口可见,有一个“修改器”属性。对于您的数据集,它可能是内部的。

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