【问题标题】:Why is VS2013 not generating satellite assemblies?为什么VS2013不生成卫星程序集?
【发布时间】:2014-08-21 07:46:10
【问题描述】:

虽然我团队的其他成员都在使用 VS2012,但我是团队中第一个切换到 VS2013 的成员。我注意到的第一个主要区别是,对于同一个项目/解决方案,VS2012 正在为我的 RESX 本地化文件生成附属程序集,但 VS2013 不是。所有资源都嵌入到主程序集中。

如何让VS2013自动生成附属程序集?

更新:这是构建日志中有趣的部分:

似乎没有正确检测到文化。在 VS2012 构建日志中,它是。

2>Target "SplitResourcesByCulture" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "..." (target "PrepareResourceNames" depends on it):
2>Task "Warning" skipped, due to false condition; ('@(ResxWithNoCulture)'!='') was evaluated as (''!='').
2>Task "Warning" skipped, due to false condition; ('@(ResxWithCulture)'!='') was evaluated as (''!='').
2>Task "Warning" skipped, due to false condition; ('@(NonResxWithCulture)'!='') was evaluated as (''!='').
2>Task "Warning" skipped, due to false condition; ('@(NonResxWithNoCulture)'!='') was evaluated as (''!='').
2>Task "AssignCulture"
2>  Culture of "" was assigned to file "Documentation\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Documentation\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\Analysis\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Analysis\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\Features.fr.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\Features.resx".
2>  Culture of "" was assigned to file "Modules\Reporting\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Reporting\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Controls\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Controls\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\StructureItemAttributes.fr.resx".
2>  Culture of "" was assigned to file "Infrastructure\Resources\StructureItemAttributes.resx".
2>  Culture of "" was assigned to file "Modules\Data\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Data\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\Home\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Home\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\License\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\License\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\Menu\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Menu\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\Options\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Options\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Modules\Structure\Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Modules\Structure\Resources\Messages.resx".
2>  Culture of "" was assigned to file "Resources\Messages.fr.resx".
2>  Culture of "" was assigned to file "Resources\Messages.resx".
2>Done executing task "AssignCulture".

【问题讨论】:

  • 将构建详细程度切换为“详细”,如果您需要帮助解释它,请发布您获得的日志。
  • 我已将构建输出添加到原始问题中。
  • 在反编译 AssignCulture 任务后,我发现 CultureInfo.GetCultures(CultureTypes.AllCultures) 在我的计算机上使用 VS2013 仅返回 2 种文化(zh-CHS、zh-CHT)。它正在使用 VS2012 在计算机上返回 378 种文化。我现在正试图弄清楚为什么我的文化如此之少。

标签: visual-studio-2013 satellite-assembly


【解决方案1】:

这个问题是由于 CultureInfo.GetCultures 返回一个空集合。修复如下(this separate question 的答案我也打开了):

检查是否存在键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\ExtendedLocale。如果缺少,则可以通过添加此密钥来解决known issue

只需添加“ExtendedLocale”注册表项即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多