【问题标题】:Is there a way to make Strongly Typed Resource files public (as opposed to internal)?有没有办法公开强类型资源文件(而不是内部文件)?
【发布时间】:2010-09-13 13:06:27
【问题描述】:

这是我想做的:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    不确定您使用的是哪个版本的 Visual Studio,因此我将针对任一版本列出步骤:

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

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

    【讨论】:

    • 完美,谢谢!我以前没有见过 InternalsVisibleTo 属性,但这正是我所需要的。它让我保持简单、干净,而且我不必安装 ResXFileCodeGeneratorEx。
    【解决方案2】:

    Visual Studio 2008 允许您选择生成的资源类是内部的还是公共的。还有ResXFileCodeGeneratorEx,它应该适用于 Visual Studio 2005。

    【讨论】:

    • 我正在使用 VS 2005,所以 ResXFileGeneratorEx 本来是要走的路。感谢您的回答!
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      相关资源
      最近更新 更多