一直试图在我的项目中设置特定于配置的资源.resw文件变体,以便在调试和发布(以及其他配置)中有不同的资源字符串值。
VS中有标准的工具,根据所选的配置,有条件地包含或排除在构建之外的文件。我已经将文件属性设置为Content=Yes,并将必须包含在配置中的文件排除在Build=No之外,而对于另一个文件则相反。
变体出现在IDE中,只有一个匹配的当前配置处于活动状态,另一个配置在Properties视图中用Content=False显示,在文件列表中显示一个红色图标。vcxproj还包含具有PRIResource和ExcludedFromBuild集的.resw文件的正确DeploymentContent节点:
<ItemGroup>
<PRIResource Include="Debug\Strings.resw">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</ExcludedFromBuild>
<DeploymentContent...
但是,生成此项目时会出现消息失败。
error PRI277: 0xdef00532 -资源'resw名称/资源名称‘的冲突值
检查中间文件可以发现,两个.resw变体都列在resources.resfiles中,然后输入到MakePri.exe中。似乎忽略了ExcludedFromBuild设置。
我怎么才能让这个起作用?是否有一种特殊的方法来控制resw文件的包含?也许是一种完全不同的方法来拥有字符串变体?
发布于 2020-03-16 23:57:55
显然有用于组织资源变体的“限定符”和命名方案(https://learn.microsoft.com/en-us/windows/uwp/app-resources/tailor-resources-lang-scale-contrast)。甚至还有一个“配置”限定符,尽管还不完全清楚是哪种配置,以及在运行时我应该使用一个标识符来选择我想要的资源变体。
为了完整起见,将它添加为一个答案,因为这是相关的,甚至可能对某人有用。但是,我不喜欢将项目配置问题转移到运行时,将不需要的、可能是敏感的值添加到包中。因此,我决定强制模仿ExcludedFromBuild,并通过自定义构建步骤选择并复制我需要的单个.resw版本。向应对微软这一尴尬局面负责的人大喊大叫。
https://stackoverflow.com/questions/60667192
复制相似问题