如何使用MSBuild有条件地包含一个文件来代替另一个文件?

如何使用MSBuild有条件地包含一个文件来代替另一个文件?,msbuild,Msbuild,我们有一个项目,有几个不同的构建配置,它们具有相同的命名文件,但内容有时略有不同。这些文件大多位于参考资料文件夹中。在MSBuild和Xamarin.Mac之间,程序会将文件从与生成配置匹配的子文件夹中取出,并将其上移到Resources文件夹的根目录中,代码如下: <ItemGroup Condition="'$(Configuration)' == 'ReleaseA'"> <BundleResource Include="Resources\A\logo.png"&g

我们有一个项目,有几个不同的构建配置,它们具有相同的命名文件,但内容有时略有不同。这些文件大多位于参考资料文件夹中。在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>
不幸的是,这不起作用,我不知道如何与MSBuild通信,我希望将子文件夹A或B中的.xib文件视为实际上是
UI\FileSelectWindow.xib

如何在MSBuild中执行此操作?我尝试过自定义命令,
,但它们实际上都修改了在git中跟踪的文件。我还尝试将文件直接放在
UI
文件夹中,并用相同的逻辑名称将它们命名为FileSelectWindow-A和FileSelectWindow-B,但都没有用

<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>