Problemas em adicionar um UserControl referenciando um C ++ / CLI wrapper para um não gerenciado dll para uma forma

StackOverflow https://stackoverflow.com/questions/817139

Pergunta

referências meu UserControl um C ++ / CLI wrapper para um não gerenciado C ++ dll. Quando tento adicionar o UserControl a um formulário, recebo um erro de Visual Studio, que diz: "Falha ao criar o componente 'UserControl'", dando um System.IO.FileNotFoundException como a causa.

Pelo que tenho sido capaz de determinar, o problema decorre de visual studio não copiar o C ++ / CLI wrapper do assembly é dependências não gerenciados. Se eu colocar as dependências não gerenciados no caminho do sistema, tudo funciona bem.

Existe uma maneira melhor de fazer isso?

Foi útil?

Solução

A melhor coisa a fazer seria a de incluir o .dll real em seu projeto, marcar a sua ação de compilação como "Conteúdo", em seguida, defina o Copiar para o diretório de saída para "Sempre". Isto deve obter o .dll em seu diretório de saída para que o aplicativo pode ser executado, e apenas inclusive o arquivo no projeto deve colocá-lo no diretório do projeto para que o designer pode encontrá-lo.

Certifique-se de que seu projeto de instalação inclui uma saída de projeto para os arquivos de conteúdo a partir desse projeto também.

Editar

Se aqueles que não fazer o trabalho, você também pode editar os caminhos de referência do próprio projeto (nas propriedades do projeto), embora eu não estou certo de que isso vai afetar o designer. Se isso não acontecer, então a sua única opção real é ter a .dll em um dos diretórios do caminho do sistema.

Outras dicas

discussão antiga, mas submetendo a minha solução desde que eu só encontrei o problema e encontrei esta questão durante o processo.

Basicamente, eu só fez as DLLs nativas a serem atraso carregados no meu invólucro C ++ / biblioteca CLI. Desde a parte C ++ / CLI do invólucro contém as especificações de interface usados ??pelo Visual Studio e do quadro, a DLL nativa nunca é necessário ou carregado. Eu respondi-lo com um pouco mais de detalhes nesta pergunta também: https://stackoverflow.com/a/15481687/34440

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top