У нас есть проект с несколькими различными конфигурациями сборки, которые имеют файлы с одинаковыми именами, но их содержание иногда немного отличается. Большинство этих файлов находятся в папке Resources . Между MSBuild и Xamarin.Ma c программа знает, как извлечь файл из подпапки, соответствующей конфигурации сборки, и переместить его в root папки 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
.
Теперь я пытаюсь выполнить sh то же самое с одним файлом, не связанным с папкой 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, что я хочу обработать файл .xib в подпапке A или B, как если бы это было на самом деле UI\FileSelectWindow.xib
Как мне go сделать это в MSBuild? Я пробовал пользовательские команды <Move>
и <Copy>
, но все они фактически изменяют файлы, которые отслеживаются в git. Я также попытался поместить файлы непосредственно в папку UI
и присвоить им имена FileSelectWindow-A и FileSelectWindow-B с одинаковым логическим именем, но безрезультатно.