2009-03-11 10 views
6

Supponiamo di avere un progetto Winforms C#, MainGUI.VS2008.NET: Ottenere le dipendenze di un progetto di riferimento da copiare nella cartella bin del progetto principale

Fa riferimento a un altro progetto nella stessa soluzione, ControlsLib.

ControlsLib fa riferimento a una suite di controllo di terze parti, come i controlli Infragistics o Telerik, ed espone una serie di controlli utente, utilizzati in MainGUI.

Copia locale è impostato su true su tutti i riferimenti in ControlsLib e tutte le DLL di terze parti sono visualizzate in ControlsLib \ bin \ release.

Tuttavia non posso ottenere il terzo DLL parti per copiare automaticamente MainGUI \ bin \ release, che è la cartella da cui si genera installazione del software (in questo caso utilizzando NSIS)

Pertanto le DLL di controllo di terze parti non vengono inclusi nell'installazione, il che porta a FileNotFoundException in fase di esecuzione quando vengono utilizzati i controlli di ControlLib che dipendono dalle DLL di terze parti.

Esiste un modo "corretto" per eseguire questa operazione di cui non sono a conoscenza? Precedentemente ho appena gestito questo in uno script nant build copiando i file, ma sto iniziando un nuovo progetto e volevo solo controllare.

Grazie

risposta

2

ho appena risolto questo con l'aggiunta del seguente post accumulo riga di comando evento al file Csproj per MainGUI (proprietà del progetto -> costruire eventi)

copy $(SolutionDir)ControlsLib\bin\$(ConfigurationName)\Infragistics2*.dll $(TargetDir) 

non avevo capito che era così facendo in realtà facile ...

0

Si avrebbe bisogno di aggiungere un link ai file necessari dal progetto UI (MainGUI) e li copiare nella cartella di output da . Gli strumenti di packaging integrati fanno (IIRC) a cascata questi correttamente, ma per gli strumenti esterni mi aspetto che dovrai farlo manualmente.

Sul mio server di build, utilizzo uno script che indaga i riferimenti e aggiunge tutti i riferimenti discendenti poco prima che sia stato creato (modificando i file csproj come xml) ... il codice non è ottimo, ma lo fa il lavoro.

0

Ho avuto un problema simile utilizzando Gentle.NET (O/R Mapper). Una delle DLL si rifiuta di copiare. Ho investigato per ore e non sono riuscito a trovare una ragione. Tutti gli altri file vengono copiati, ma CHE è escluso per qualche strano motivo. Gentle ha utilizzato tre DLL, Gentle.Common.DLL, Gentle.Framework.DLL e Gentle.SQLProvider.DLL. L'ultimo non viene mai copiato.

Alla fine ho semplicemente fatto una sceneggiatura ...

0

Se si modificano le proprietà principali del progetto (quella eseguibile) sulla scheda Pubblica, l'opzione dei file applicativi, allora si sarà in grado di dire a VS per includere tutti i file che non vengono copiati.