XML ファイルはコンパイルされないため、条件付きコンパイルのようなものはありません。したがって、解決しようとしている主な問題として、ビルド出力に両方の XML ファイルを含める必要があるという事実を認識しています。
できることは、構成に応じてビルドを調整することです。たとえば、デバッグ ビルドの場合はファイル A が出力フォルダーにコピーされ、リリース ビルド ファイル B の場合はファイル B がコピーされます。
これを実現するには、同様のコードを追加する必要があります。あなたのcsprojファイルに:
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<XmlInput Include="FileA.xml">
<Visible>False</Visible>
</XmlInput>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Release' ">
<XmlInput Include="FileB.xml">
<Visible>False</Visible>
</XmlInput>
</ItemGroup>
<ItemGroup>
<XmlOutput Include="$(OutputPath)\File.xml">
<Visible>False</Visible>
</XmlOutput>
</ItemGroup>
<Target Name="AfterBuild">
<Copy SourceFiles="@(XmlInput)" DestinationFiles="@(XmlOutput)" />
</Target>
<Target Name="BeforeClean">
<Delete Files="@(XmlOutput)" />
</Target>
このコードは、選択した構成に依存するビルドに ItemGroup を追加します。AfterBuild ターゲットでは、ファイルが出力パスにコピーされます。BeforeClean ターゲットでは、ファイルが再度削除されます。コードでは、条件付きコンパイルはもう必要ありませんが、アクセスできる出力フォルダーに共通のファイル名があります。
サンプルでは、プロジェクトに 2 つの XML ファイル (FileA.xml と FileB.xml) を追加しました。コピーする正しいファイルを選択するために、それらを XmlOutput アイテムとして再度参照します。これらは Visible = false とマークされているため、ソリューション エクスプローラーには表示されません。