msbuild - 如何使用 MSBuild 有条件地包含一个文件来代替另一个文件?
问题描述
我们有一个项目,其中包含几个不同的构建配置,这些配置具有同名文件,但内容有时略有不同。这些文件中的大多数都位于Resources文件夹中。在 MSBuild 和 Xamarin.Mac 之间,程序知道从与构建配置匹配的子文件夹中取出文件,并将其移动到Resources文件夹的根目录,代码如下:
<ItemGroup Condition="'$(Configuration)' == 'ReleaseA'">
<BundleResource Include="Resources\A\logo.png">
<LogicalName>logo.png</LogicalName>
</BundleResource>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'ReleaseB'">
<BundleResource Include="Resources\B\logo.png">
<LogicalName>logo.png</LogicalName>
</BundleResource>
</ItemGroup>
因此,如果我构建ReleaseA
,MSBuild 知道我想将Resources\A\logo.png
其视为Resources\logo.png
.
现在,我正在尝试使用与 Resources 文件夹无关的单个文件来完成同样的事情:
<ItemGroup Condition="'$(Configuration)' == 'ReleaseA'">
<InterfaceDefinition Include="UI\A\FileSelectWindow.xib">
<LogicalName>FileSelectWindow.xib<\LogicalName>
</InterfaceDefinition>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'ReleaseB'">
<InterfaceDefinition Include="UI\B\FileSelectWindow.xib">
<LogicalName>FileSelectWindow.xib<\LogicalName>
</InterfaceDefinition>
</ItemGroup>
不幸的是,这不起作用,我不确定如何与 MSBuild 沟通,我想将子文件夹 A 或 B 中的 .xib 文件视为实际UI\FileSelectWindow.xib
如何在 MSBuild 中执行此操作?我尝试过自定义命令 ,<Move>
和<Copy>
,但它们实际上都修改了在 git 中跟踪的文件。我还尝试将文件直接放在UI
文件夹中,并将它们命名为 FileSelectWindow-A 和 FileSelectWindow-B 具有相同的逻辑名称也无济于事。
解决方案
推荐阅读
- javascript - i18n,javascript - 有没有办法使用第二个文件来解决差异?
- mysql - 意外的 GROUP BY 行为 MySQL?
- r - 从第二个数据帧更改数据帧的颜色
- git - 在生产服务器上使用 Jenkins 进行部署的最佳方法
- html - HTML - 图像悬停交换到短视频
- azure - 是否可以创建已弃用的 azure 数字孪生版本?
- java - Oracle ORA-01465 的 JPA UUID 映射:无效的十六进制数
- php - 如何处理多种环境:使用 paypal webhooks 进行开发、登台和生产?
- javascript - 我创建了秒表,我想在我的 HTML 页面中显示 4 列和 4 行的圈数按钮单击
- javascript - 从另一个页面链接页面时如何创建页面跳转