如何解决如何使用VS构建配置设置嵌入式资源属性?
我正在使用Visual Studio for Mac。
我发现了这个https://forums.xamarin.com/discussion/96777/how-to-set-info-plist-properties-with-vs-build-configurations,它描述了如何使用特定的构建配置来设置辅助plist文件。哪个效果很好。
<None Include="Entitlements.plist" Condition="'$(Configuration)' != 'Debug-Staging'" />
<None Include="Entitlements-staging.plist" Condition="'$(Configuration)' == 'Debug-Staging'">
<LogicalName>Entitlements.plist</LogicalName>
</None>
但是这种方法不适用于嵌入式资源...
<EmbeddedResource Include="ClientResources\myfolder\config.json"
Condition="'$(Configuration)' != 'Debug-Staging'" />
<EmbeddedResource Include="ClientResources\myfolder\config-staging.json"
Condition="'$(Configuration)' == 'Debug-Staging'">
<LogicalName>config.json</LogicalName>
</EmbeddedResource>
我还尝试了使用完整路径的LogicalName ... 另外,将条件放在ItemGroup上也无济于事。
编辑:
这是我创建的示例项目... https://github.com/JulesMoorhouse/ConfigBuildConfig/blob/master/ConfigBuildConfig/ConfigBuildConfig.csproj
如果选择了Debug-Staging
配置,它将读取config-staging.json
并在控制台中输出该值。
这些资料表明这应该可行...
- Same source,multiple targets with different resources (Visual Studio .Net 2008)
- https://social.msdn.microsoft.com/Forums/en-US/aa2d687d-0f6c-4a1c-af95-201f7e091f5c/embed-resource-conditionally-at-compiletime?forum=csharplanguage
解决方法
这里似乎有两个主要问题。
- 您的Debug-Staging配置已映射到Debug配置。
这意味着条件未用于EmbeddedResource。
如果右键单击“解决方案”窗口中的解决方案,然后选择“选项”,然后选择“构建-配置”,则可以看到映射。
如果在下拉菜单中选择“调试阶段”,则可以看到它在构建时已映射到“调试”。
作为此处的快速解决方案,我删除了Debug-Staging配置,重新添加了它,确保选中为所有解决方案项创建配置,然后将Debug-Staging映射到仅针对.NET Standard CreateBuildConfig项目的Debug,其他项目改用Debug。
完成此操作后,我在构建配置映射中添加了此
:- LogicalName覆盖默认行为,并成为嵌入式资源的全名。
您的代码假定资源始终嵌入为:
"ConfigBuildConfig.ClientResources.myfolder.config.json"
您可以更改两个EmbeddedResources,因此LogicalName为config.json,因此无需指定完整路径。
或者,为避免更改读取嵌入式资源的代码,您可以修改EmbeddedResource的LogicalName:
<EmbeddedResource Include="ClientResources\myfolder\config-staging.json" Condition="'$(Configuration)' == 'Debug-Staging'">
<LogicalName>ConfigBuildConfig.ClientResources.myfolder.config.json</LogicalName>
</EmbeddedResource>
在这两件事情固定然后data.Environment显示“分期”当调试分段被选择为配置和“生产”当调试被选择作为主工具栏在配置中。
要使调试适用于Debug-Staging配置,我必须更新.NET Standard项目中的配置。 DebugType,DebugSymbols是需要添加的两个MSBuild属性,但完整的更改如下所示:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug-Staging|AnyCPU' ">
<IntermediateOutputPath>obj\Debug-Staging</IntermediateOutputPath>
<DebugType>portable</DebugType>
<DebugSymbols>true</DebugSymbols>
<Optimize>false</Optimize>
<OutputPath>bin\Debug-Staging</OutputPath>
<DefineConstants></DefineConstants>
<NoWarn></NoWarn>
<NoStdLib>false</NoStdLib>
</PropertyGroup>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。