2013-04-03 15 views
7

Ho una soluzione che contiene un progetto DLL C++ e un progetto C# che utilizzerà questa DLL (utilizzando PInvoke).Come fare correttamente riferimento a una dll in Visual Studio 2010?

La DLL è in fase di costruzione nella cartella x64/Release nella cartella della mia soluzione, il che ha senso, perché in questo modo il progetto C# non deve penetrare nelle cartelle del progetto DLL.

Mi chiedo quale sarebbe il modo corretto di fare riferimento ora però. In questo momento, il progetto DLL è una dipendenza del progetto C#. La mia intuizione mi ha detto che avrebbe dovuto essere sufficiente, ma il progetto C# dice che non riesce a trovare la DLL.

Devo solo aggiungere il file .dll come riferimento? Ho pensato che ora potrebbe funzionare, ma a lungo andare rompere le cose quando le impostazioni del progetto potrebbero essere cambiate.

+0

È il codice gestito DLL C++? – WhozCraig

+0

@WhozCraig: Dice che sta usando P/Invoke - deve essere quindi non gestito. –

+0

Sì, l'ho appena visto. duh. Ho davvero bisogno di dormire un po '. – WhozCraig

risposta

1

Di solito in tali situazioni configuro la mia soluzione in modo tale che tutti i progetti vengano compilati allo $(SolutionDir)bin\$(Configuration). I file binari vengono quindi identificati nella modalità di produzione e le DLL possono essere facilmente utilizzate.

Per quanto riguarda il mantenimento della versione più recente della DLL, ricordare che è possibile impostare una dipendenza, in modo che se qualcosa cambia in DLL, verrà ricostruita prima di creare l'assembly/applicazione.

Un altro modo è utilizzare gli eventi di compilazione (prebuild e postbuild) per copiare la DLL nella cartella appropriata.

1

Non è possibile aggiungere una DLL non gestita come riferimento in un progetto gestito. La DLL deve risiedere nella cartella dell'eseguibile o in qualsiasi altra cartella del PERCORSO del sistema.

Il modo migliore è utilizzare un "Post Build Event" per fare in modo che VS copia la DLL nella cartella in cui è necessaria ogni volta che viene ricostruita.

Problemi correlati