Existem maneiras melhores de copiar uma dll nativa para a pasta bin?

Eu tenho código de wrapper C # que chama funções de uma dll nativa (C ++). Atualmente, posso adicionar uma referência à DLL do C # e definir a opção 'Copiar local' como true. No entanto, a dll nativa, que é uma dependência, não pode ser adicionada como referência - portanto, não há opção 'Copiar local'.

Eu tentei as seguintes abordagens

Usando eventos pós-compilação para copiar a dll nativa da pasta Libs para o diretório$(TargetFolder)

copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"

Incluiu a dll nativa como um item existente no projeto (Adicionar -> Item Existente -> Incluir dll). Esta opção permite-me usar a opção 'Copiar local'. A desvantagem dessa abordagem é que a dll sempre aparece como um item de projeto.

Eu também tentei "Mostrar todos os arquivos", o que me permitiu ver a pasta Libs. Em seguida, incluo o arquivo NQuantLibc.dll no projeto, o que me permitiu definir a opção 'Copiar local'. No entanto, isso me deu um resultado inesperado. Ele criou uma subpasta Libs contendo a dll na pasta bin (por exemplo,bin/debug/Libs/NQuantLibc.dll) Não é o ideal, pois a DLL do C # não pôde chamar corretamente a DLL nativa, pois ela não estava lá.

Ambas as opções acima funcionam. Existem maneiras melhores de copiar uma dll nativa para a pasta bin, de modo que a dependência sempre seja resolvida? Como alternativa, existe uma abordagem diferente para esse tipo de cenário?

questionAnswers(6)

yourAnswerToTheQuestion