在.NET 2.0中重新标记应用程序资源

时间:2009-10-14 15:27:03

标签: c# .net deployment resources branding

我即将开始在.NET 2.0(C#)中编写一个工具,该工具需要重新品牌化才能出售供其他公司使用。我们将使用其他公司的资源在内部编译该工具,因此他们不会获得源,只是生成的输出。

由于重新标记将使用相同的默认语言,因此如何管理同一语言集的多个资源,而无需像在构建时使用脚本交换resx文件那样低俗,或者甚至更加容易出错(并且更容易出错) )比如对客户A使用en-US,对客户B使用en-CA,对客户C使用en-GB等。

3 个答案:

答案 0 :(得分:3)

我们在项目中发现,最简单的路线是在自己的DLL中建立品牌,然后通过反射动态加载。如果需要,有两种明显的方法来本地化任何品牌:

  1. 将品牌DLL替换为已本地化的另一个
  2. 使用.NET支持的附属装配技术
  3. 在我看来,选项1更容易,但两者都是可行的。当然,还有其他的本地化方法。

答案 1 :(得分:1)

答案 2 :(得分:1)

我决定选择的路线是拥有一个TextOverrides类。该类公开了许多属性,例如:

public static string ProductName
{
  get
  {
    #if <companyNameA>
      return Properties.Resources.ProductName_CompanyNameA;
    #elif <companyNameB>
      return Properties.Resources.ProductName_CompanyNameB;
    #else
      return Properties.Resources.ProductName;
    #endif
  }
}

仅当覆盖文本项的数量仍然很小时才可行。