.net VisualStudio2010没有';t为自定义区域性生成附属程序集
我的资源文件位于单独的dll中,所有文件都标记为:.net VisualStudio2010没有';t为自定义区域性生成附属程序集,.net,visual-studio-2010,resources,globalization,.net,Visual Studio 2010,Resources,Globalization,我的资源文件位于单独的dll中,所有文件都标记为: 构建操作-嵌入式资源 复制到输出目录-不复制 自定义工具-PublicResXFileCodeGenerator 添加了自定义区域性文件:SiteLabels.en customer.resx 添加了新的文化en customer,作为源自“en”的中性语言 构建项目并看到附属程序集en customer\MyResources.resources.dll 不是由VS创建的 阅读SO中关于此问题的所有答案,没有看到任何关于此问题的投诉,只有
- 构建操作-嵌入式资源
- 复制到输出目录-不复制
- 自定义工具-PublicResXFileCodeGenerator
添加了新的文化en customer,作为源自“en”的中性语言 构建项目并看到附属程序集en customer\MyResources.resources.dll
不是由VS创建的 阅读SO中关于此问题的所有答案,没有看到任何关于此问题的投诉,只有关于使用CLI创建附属程序集的建议。
本例中的问题是引用my resources dll的项目不会将新创建的附属程序集复制到其bin文件夹中。此问题的解决方案非常简单:
在计算机上注册新的自定义区域性后,必须重新启动VS2010才能为新添加的自定义区域性生成附属程序集 显然,VS2010(希望MS在2012年修复)在加载时在计算机上缓存区域性,并且不会为其不知道的区域性的resx文件创建附属程序集。没有警告,没有错误,只有无声的死亡。
我使用了两个VS实例,因此在第一个实例中注册不会影响另一个实例 希望这能帮助别人 p.s.在我的资源dll中,我创建了一个.tt文件,该文件在每次构建时都会扫描资源并搜索自定义资源文件,以创建一个包含所有自定义资源的变量的类。
我使用此变量注册我的自定义区域性+签入应用程序\u如果所有自定义区域性都已在计算机上注册,则启动。我希望我可以多次向上投票。我已经有好几天没有生成资源程序集的问题了,这为我指明了正确的方向,你必须在你正在构建的盒子上安装一个自定义区域性!尼克,别忘了在添加VS后重新启动它,因为它在加载时会缓存区域性
string culture = "en-customer";
CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new
CultureAndRegionInfoBuilder(culture, CultureAndRegionModifiers.Neutral);
CultureInfo cultureInfo = new CultureInfo(twoLetterISOLanguageName);
cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo);
cultureAndRegionInfoBuilder.Parent = cultureInfo;
cultureAndRegionInfoBuilder.CultureEnglishName = culture;
if (CultureInfo.GetCultures(CultureTypes.UserCustomCulture).Any(cult => cult.Name == culture))
{
CultureAndRegionInfoBuilder.Unregister(culture);
}
cultureAndRegionInfoBuilder.Register();