Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net VisualStudio2010没有';t为自定义区域性生成附属程序集_.net_Visual Studio 2010_Resources_Globalization - Fatal编程技术网

.net VisualStudio2010没有';t为自定义区域性生成附属程序集

.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中关于此问题的所有答案,没有看到任何关于此问题的投诉,只有

我的资源文件位于单独的dll中,所有文件都标记为:

  • 构建操作-嵌入式资源
  • 复制到输出目录-不复制
  • 自定义工具-PublicResXFileCodeGenerator
添加了自定义区域性文件:SiteLabels.en customer.resx
添加了新的文化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();