Risposte:
La obj
cartella contiene file oggetto o intermedi, che sono file binari compilati che non sono ancora stati collegati. Sono essenzialmente frammenti che verranno combinati per produrre l'eseguibile finale. Il compilatore genera un file oggetto per ciascun file di origine e tali file vengono inseriti nella obj
cartella.
La bin
cartella contiene file binari , che sono il codice eseguibile effettivo per l'applicazione o la libreria.
Ognuna di queste cartelle è ulteriormente suddivisa in Debug
e Release
cartelle, che corrispondono semplicemente alle configurazioni di build del progetto. I due tipi di file discussi sopra sono collocati nella cartella appropriata, a seconda del tipo di build che esegui. Ciò semplifica la determinazione dei file eseguibili creati con i simboli di debug e quali sono stati creati con le ottimizzazioni abilitate e pronte per il rilascio.
Si noti che è possibile modificare la posizione in cui Visual Studio genera i file eseguibili durante una compilazione nelle Proprietà del progetto. Puoi anche cambiare i nomi e le opzioni selezionate per le tue configurazioni di build.
obj
davvero contenere solo non collegate file di codice oggetto? Dalla mia esperienza, che contiene tutto di loro, e al passaggio di generazione finale, i file che fanno parte del "set finale" vengono copiati in bin
.
Vorrei incoraggiarvi a vedere questo video di YouTube che dimostra la differenza tra le cartelle C # bin e obj e spiega anche come trarre vantaggio dalla compilazione incrementale / condizionale.
La compilazione C # è un processo in due passaggi, vedere il diagramma seguente per maggiori dettagli:
Se si confrontano sia la directory bin che quella obj, nella directory "obj" si troverà un numero maggiore di file poiché ha singoli file di codice compilati mentre "bin" ha una singola unità.
La obj
directory è per file di oggetti intermedi e altri file di dati transitori che vengono generati dal compilatore o dal sistema di compilazione durante una compilazione. La bin
directory è la directory in cui verranno scritti i file binari di output finali (e tutte le dipendenze o altri file distribuibili).
Se lo desideri, puoi modificare le directory effettive utilizzate per entrambi gli scopi all'interno delle impostazioni del progetto.
Un fatto interessante sulla directory obj: se la pubblicazione è stata impostata in un progetto Web, i file che verranno pubblicati vengono messi in scena in obj \ Release \ Package \ PackageTmp. Se vuoi pubblicare i file da solo anziché utilizzare la funzione VS integrata, puoi prendere i file che devi effettivamente distribuire qui, piuttosto che raccogliere tutti i detriti digitali nella directory bin.
Fai attenzione ai setup
progetti se li stai usando; I progetti di installazione di Visual Studio vengono Primary Output
estratti dalla obj
cartella anziché da bin
.
Stavo rilasciando applicazioni che pensavo fossero offuscate e firmate nelle msi
configurazioni da un po 'di tempo prima di scoprire che i file delle applicazioni distribuite non erano in realtà né offuscati né firmati mentre eseguivo la procedura di post-compilazione sugli bin
assemblaggi di cartelle e avrei dovuto scegliere come target la obj
cartella assemblee invece.
Questo è tutt'altro che intuitivo, ma l' setup
approccio generale è quello di utilizzare Primary Output
il progetto e questa è la obj
cartella. Mi farebbe piacere se qualcuno potesse fare luce su questo BTW.