22

这是我想做的:

我想创建一个包含我的资源文件(即 UI 标签等)的库项目。然后我想在我的 UI 和我的测试中使用资源库。(即,我从多个项目中引用的资源基本上有一个共同的地方。)

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

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

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

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

4

3 回答 3

38

不确定您使用的是哪个版本的 Visual Studio,因此我将为任一版本设置步骤:

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

VS 2005 - 你没有像 VS 2008 那样生成代码的选项。这是一个添加的功能,因为这个令人头疼。虽然有解决办法。您可以使用像此工具这样的第三方生成器,也可以使用 AssemblyInfo.cs 中的InternalsVisibleTo属性来添加可以访问资源库内部类的项目。

于 2008-09-26T18:11:00.513 回答
2

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

于 2008-09-26T17:53:59.120 回答
0

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

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

于 2008-09-26T17:57:02.293 回答