我即將開始在.NET 2.0(C#)中編寫工具,並且該工具需要重新品牌化以供其他公司使用。我們將在內部編譯該工具以及其他公司的資源,以便它們不會獲得源代碼,只是生成的輸出。在.NET 2.0中重塑應用程序資源
由於重新品牌化將使用相同的默認語言,您如何管理同一語言集的多個資源,而不需要做一些低級的事情,比如在構建時用腳本交換resx文件,或者更糟糕的東西(以及更多的錯誤像使用en-US代表客戶A,en-CA代表客戶B,en-GB代表客戶C,等等。
我即將開始在.NET 2.0(C#)中編寫工具,並且該工具需要重新品牌化以供其他公司使用。我們將在內部編譯該工具以及其他公司的資源,以便它們不會獲得源代碼,只是生成的輸出。在.NET 2.0中重塑應用程序資源
由於重新品牌化將使用相同的默認語言,您如何管理同一語言集的多個資源,而不需要做一些低級的事情,比如在構建時用腳本交換resx文件,或者更糟糕的東西(以及更多的錯誤像使用en-US代表客戶A,en-CA代表客戶B,en-GB代表客戶C,等等。
我決定去的路線是有一個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
}
}
這是唯一可行的,如果被覆蓋的文本的項目數量仍然很小。
您可以嘗試使用Satellite Assemblies。
http://msdn.microsoft.com/en-us/library/21a15yht(VS.80).aspx
我們在我們的項目中,最簡單的路線是在其自己的DLL,然後動態加載通過反射的品牌找到。如果需要的話,有兩個明顯的方法來定位任何品牌:
選項1是更換品牌DLL在我看來,這更容易,但都是可行的。當然,還有其他的本地化方法。