2008-09-26 82 views
22

下面是我想要做的:有没有办法让强类型资源文件公开(而不是内部)?

我想创建一个包含我的资源文件(即UI标签和whatnot)的库项目。然后,我想在我的用户界面和我的测试中使用资源库。 (也就是说,我基本上有一个我从多个项目中参考的资源的共同点)。

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

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

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

我宁愿避免为了实现这个目的而使用构建事件(即,做一些事情,比如用'public'替换'internal'的所有实例,但这基本上是我的倒退计划,如果我无法找到答案..

回答

37

不知道你正在使用Visual Studio的版本,所以我会把步骤任一:

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

VS 2005 - 你没有选择生成类似于VS 2008的代码。这是一个被添加的功能,因为这个令人头疼。尽管有解决方法。您可以使用第三方生成器,如tool,或者您可以使用AssemblyInfo.cs中的InternalsVisibleTo属性来添加可访问资源库内部类的项目。

+0

完美,谢谢!我之前没有看到InternalsVisibleTo属性,但这正是我需要的。它让我保持简单,干净,而且我不必安装ResXFileCodeGeneratorEx。 – 2008-09-26 18:16:01

2

Visual Studio 2008中,您可以选择生成的资源类是否应该是内部或公开的。也有ResXFileCodeGeneratorEx,它应该做的,对Visual Studio 2005的

+0

我使用的是VS 2005,所以ResXFileGeneratorEx本来就是要走的路。感谢您的回答! – 2008-09-26 18:17:07

0

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

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

相关问题