Visual studio 2015 正在尝试将Wix.wxl文件移动到Wix.wixlib项目

Visual studio 2015 正在尝试将Wix.wxl文件移动到Wix.wixlib项目,visual-studio-2015,wix,windows-installer,wix3.10,wixlib,Visual Studio 2015,Wix,Windows Installer,Wix3.10,Wixlib,设置 所以我有两个Wix项目,一个是我们的主要项目,其中包含Product.wxs文件,第二个是我们的共享.wxs文件库。我们的主要Wix项目引用了库项目。这也是Visual Studio 2015解决方案的全部内容。主Wix项目中还有一个.wxl文件(WixLocalization文件) 我正在努力实现的目标 我想将该.wxl文件移动到库Wix项目中,因为它也可以为其他项目共享 我遇到的问题 当我将文件复制到库项目并删除主项目中的原始文件时,我在Visual Studio中收到一系列编译错误,

设置

所以我有两个Wix项目,一个是我们的主要项目,其中包含Product.wxs文件,第二个是我们的共享.wxs文件库。我们的主要Wix项目引用了库项目。这也是Visual Studio 2015解决方案的全部内容。主Wix项目中还有一个.wxl文件(WixLocalization文件)

我正在努力实现的目标

我想将该.wxl文件移动到库Wix项目中,因为它也可以为其他项目共享

我遇到的问题

当我将文件复制到库项目并删除主项目中的原始文件时,我在Visual Studio中收到一系列编译错误,它们说:“本地化变量!(loc.NameOfString)未知。请确保已定义该变量。”。我在编译主项目时遇到这个错误。Wix库1编译成功。因此,我无法再创建安装程序

我到目前为止所做的事情

我曾尝试在Wix库项目中使用.wxl文件来搜索此类主题,但没有成功

我试着深入研究,如果将这些字符串值移动到Wix库中,除了“!(loc.StringName)”语法之外,是否还有其他语法可以使用这些字符串值

我也检查了项目文件,看看是否有一些参考,我需要添加或东西。“有趣的是,.wxl中的字符串值只在库本身的.wxs文件中使用。例如,我在库中有一个UI Dialog.wxs文件,它使用.wxl文件中的“!(loc.Title)”字符串值。主项目中的Product.wxs文件不使用这些字符串值

我觉得很奇怪,Wix库项目本身找不到/使用.wxl

我真的很想让它在库中工作,所以我们只有一个.wxl文件,其中包含我们使用的所有字符串值,所以我们不必为其他主要Wix项目重复复制和粘贴同一个文件


任何形式的帮助都将不胜感激。如果我不够清楚,请随时要求澄清任何令人困惑的细节。请,谢谢

您需要做的就是告诉WiX链接器在构建主项目时要使用哪个区域性。WiX库可能包含多个区域性,因此您需要选择一个区域性

在使用Visual Studio WiX项目时,只需在项目的属性页中执行此操作即可。右键单击>属性>构建>要构建的区域性

当使用命令行时,它是“light.exe”的以下参数:


能否添加一个简短的.wxl和.wxs文件以及用于创建库的命令行?编译lib或将其链接到主项目时是否会发生错误?编译主项目时会出现此错误。。。对不起,我没读到。不过我还是想举一些例子。大家好@zett42!哇,我很惊讶有人在周五回应哈!无论如何,我能够提出一个新的解决方案来复制我遇到的问题。我将其公开上传到Github,所以您应该能够获取测试代码并亲自查看。下面是链接:现在.wxl文件在库项目中,不会编译。一旦你把文件放到主项目中,它就会像往常一样工作。同样,我的目标是将这个.wxl文件放在库中,以便其他安装程序项目可以使用它。请,谢谢@zett42,也请随时要求我澄清任何困惑或顾虑。:)成功了!非常感谢@zett42!所以我检查了Build Output窗格中是否缺少参数“-cultures:”,但结果发现它确实存在。但是,它的值为“null”。在项目文件中添加“en-US”修复了它,并在构建输出窗格中显示为“-cultures:en-US”。再次感谢!
-cultures:<cultures>  semicolon or comma delimited list of localized
                      string cultures to load from .wxl files and libraries.
                      Precedence of cultures is from left to right.
light.exe [other parameters] -cultures:en-US