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?