У меня есть проект C#, который имеет две версии C ++ .dll с одинаковыми именами, но различаются в зависимости от их архитектуры (32-разрядной или 64-разрядной), они хранятся в отдельных папках и должны иметь одинаковое имя, Я хочу включить правильный файл с этим именем.
Таким образом, план состоит в том, чтобы сначала проверить текущую платформу при сборке, скопировать нужный файл из нужной папки (в зависимости от платформы) в каталог проекта, а затем включить этот файл в качестве содержимого в проект, чтобы его можно было использовать.
<ItemGroup>
<Source32Bit Include="File_32bit\File.dll" />
<Source64Bit Include="File_64bit\File.dll" />
</ItemGroup>
<Target Name="CopyFiles" BeforeTargets="Build" >
<Copy SourceFiles="@(Source32Bit)" DestinationFolder="$(ProjectDir)" Condition=" '$(Platform)' == 'x86' " />
<Copy SourceFiles="@(Source64Bit)" DestinationFolder="$(ProjectDir)" Condition=" '$(Platform)' == 'x64'" />
</Target>
<ItemGroup>
<Content Include="File.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
Но если я запустил этот файл, он попытается выполнить включение содержимого до запуска целевого объекта "CopyFiles" и не сможет найти файл. .dll в этом каталоге. Если я включаю цель для этого содержимого и пытаюсь выполнить AfterTarget = "CopyFiles", он жалуется на CopyToOutputDirectory.
Как мне справиться с этим? Любые идеи? Спасибо!