Problemi con l'aggiunta di un UserControl che fa riferimento a un wrapper C ++ / CLI a una dll non gestita in un modulo

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

Domanda

My UserControl fa riferimento a un wrapper C ++ / CLI a una DLL C ++ non gestita. Quando provo ad aggiungere UserControl a un modulo, visualizzo un errore di Visual Studio, che dice "Impossibile creare il componente" userControl ", dando un System.IO.FileNotFoundException come causa.

Da quello che sono stato in grado di determinare, il problema deriva da Visual Studio che non copia le dipendenze non gestite dell'assemblatore del wrapper C ++ / CLI. Se metto le dipendenze non gestite sul PATH di sistema, tutto funziona bene.

Esiste un modo migliore per farlo?

È stato utile?

Soluzione

La cosa più semplice da fare sarebbe includere l'attuale .dll nel progetto, contrassegnare la sua azione di compilazione come " Contenuto " ;, quindi impostare Copia nella directory di output su " Sempre " ;. Questo dovrebbe portare il .dll nella directory di output in modo che l'applicazione possa essere eseguita e solo l'inclusione del file nel progetto dovrebbe inserirlo nella directory del progetto in modo che il designer possa trovarlo.

Assicurati che il tuo progetto di installazione includa un output del progetto per i file di contenuto anche da quel progetto.

Modifica

Se quelli non funzionano, puoi anche modificare i percorsi di riferimento del progetto stesso (nelle proprietà del progetto), anche se non sono sicuro che ciò influirà sul progettista. In caso contrario, l'unica vera opzione è avere il .dll in una delle directory del percorso di sistema.

Altri suggerimenti

Vecchio thread, ma invio della mia soluzione poiché ho appena riscontrato il problema e ho trovato questa domanda durante il processo.

Fondamentalmente ho appena fatto ritardare il caricamento delle DLL native nella mia libreria wrapper C ++ / CLI. Poiché la parte C ++ / CLI del wrapper contiene le specifiche dell'interfaccia utilizzate da Visual Studio e dal framework, la DLL nativa non è mai necessaria o caricata. Ho risposto con qualche dettaglio in più in questa domanda: https://stackoverflow.com/a/15481687/34440

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top