Скопируйте DLL в подпапку в выходной каталог при использовании NuGet
Допустим, у меня есть пакет NuGet, который содержит C++ dll и взаимодействие для этой dll. Когда я устанавливаю этот пакет, я вижу, что мой файл scproj обновляется со следующей ссылкой:
<Reference Include="Interop.MyCppAssembly, Version=1.1.1.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\MyNuGetPackage.1.1.1.1\lib\Interop.MyCppAssembly.dll</HintPath>
<Private>False</Private>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
Вы можете видеть, что HintPath указывает на папку, в которую установлены мои пакеты. Вы также можете видеть, что я установил для параметра " Копировать локально" значение false, чтобы Interop.MyCppAssembly.dll не копировался в мой выходной каталог (назовем его bin) во время сборки. Я сделал это намеренно, потому что я не хочу помещать какие-либо сторонние dll-файлы в мою папку bin, чтобы избежать беспорядка в моем выходном каталоге. Вместо этого я хотел бы создать подпапку в моей корзине, например bin\ThirdPartyLibs, и поместить туда все сторонние библиотеки.
Но как я могу это сделать? Я знаю, что могу установить для CopyLocal значение true, а затем использовать событие Post Build для перемещения Interop.MyCppAssembly.dll из bin в bin\ThirdPartyLibs, но мне это не нравится. Есть ли другое решение, как скопировать dll в подпапку выходного каталога во время сборки?