使用具有多个本地化的预制

时间:2018-01-09 19:31:01

标签: localization c++-cli premake satellite-assembly

我现在用预制5 工作了几天。我目前正在尝试将我们的VS2015解决方案(主要是C ++本机和CLI项目)移植到预制5解决方案。到目前为止,我没有遇到任何问题,但现在我无法为我们将程序集本地化的所有语言构建资源库。例如,如果我们有 fr es (对于French和Spanich),我们应该有一个这样的程序集拆分:

  • foo.dll(默认,英文),
  • 卫星foo.resources.dll用于其他语言(当然,在不同的文件夹中分开)。

但是我无法正确编写lua脚本(阅读:我不知道如何)。

有人知道如何使用premake5生成本地化(AKA卫星)程序集吗?

感谢您的帮助!

编辑1

我将此添加到我的lua脚本中:

files({"/**.resx"})

它将.resx个文件添加到.vcxproj文件中,而不是像这样包含:

<EmbeddedResource Include="bar.resx"/>

它们包括在内:

<None Include="bar.resx"/>

发生了什么?

编辑2

然后我补充道:

filter "files:**.resx"
    buildaction "Embed"

但它仍然是一样的。我发现in premake 5 doc只在C#中支持buildaction(我的代码在C ++ / CLI中)。如果这是真的(似乎是)有一种方法可以更深入地使用我的脚本将XML条目直接添加到.vcxproj

1 个答案:

答案 0 :(得分:1)

嗯......经过多次尝试,我找到了一条路。我刚刚为 EmbeddedResource 添加了一个新的(文件)类别,如下所示:

premake.vstudio.vc2010.categories.EmbeddedResource = {
    name = "EmbeddedResource",
    extensions = {".resx"},
    priority = 50, -- arbitrary number, I saw priorities are 0, 1, 2...

    emitFiles = function(prj, group)
        premake.vstudio.vc2010.emitFiles(
            prj,
            group,
            "EmbeddedResource",
            {premake.vstudio.vc2010.generatedFile}    -- cannot explain this...
       )
    end,

    emitFilter = function(prj, group)
        premake.vstudio.vc2010.filterGroup(prj, group, "EmbeddedResource")
    end
}

希望它可以帮助...