Antworten:
Der objOrdner enthält Objekt- oder Zwischendateien, bei denen es sich um kompilierte Binärdateien handelt, die noch nicht verknüpft wurden. Es handelt sich im Wesentlichen um Fragmente, die kombiniert werden, um die endgültige ausführbare Datei zu erstellen. Der Compiler generiert eine Objektdatei für jede Quelldatei, und diese Dateien werden in den objOrdner gelegt.
Der binOrdner enthält Binärdateien , die den tatsächlichen ausführbaren Code für Ihre Anwendung oder Bibliothek darstellen.
Jeder dieser Ordner ist weiter unterteilt in Debugund ReleaseOrdner, die einfach den Build-Konfigurationen des Projekts entsprechen. Die beiden oben beschriebenen Dateitypen werden je nach Art des von Ihnen durchgeführten Builds in den entsprechenden Ordner verschoben. Auf diese Weise können Sie leicht feststellen, welche ausführbaren Dateien mit Debugging-Symbolen erstellt wurden und welche mit aktivierten Optimierungen erstellt wurden und zur Veröffentlichung bereit sind.
Beachten Sie, dass Sie in den Eigenschaften Ihres Projekts ändern können, wo Visual Studio Ihre ausführbaren Dateien während einer Kompilierung ausgibt. Sie können auch die Namen und ausgewählten Optionen für Ihre Build-Konfigurationen ändern.
objwirklich nur nicht verknüpfte Objektcodedateien? Aus meiner Erfahrung, es enthält alle von ihnen, und in der letzten Build - Schritt, die Dateien , die Teil der „letzten Satz“ werden , sind kopiert in bin.
Ich möchte Sie ermutigen, dieses Youtube-Video zu sehen, das den Unterschied zwischen C # bin- und obj-Ordnern zeigt und auch erklärt, wie wir den Vorteil einer inkrementellen / bedingten Kompilierung nutzen.
Die C # -Kompilierung erfolgt in zwei Schritten. Weitere Informationen finden Sie im folgenden Diagramm:
Wenn Sie sowohl das bin- als auch das obj-Verzeichnis vergleichen, finden Sie eine größere Anzahl von Dateien im "obj" -Verzeichnis, da es einzelne kompilierte Codedateien enthält, während "bin" eine einzelne Einheit hat.
Das objVerzeichnis ist für Zwischenobjektdateien und andere vorübergehende Datendateien vorgesehen, die vom Compiler oder Buildsystem während eines Builds generiert werden. Das binVerzeichnis ist das Verzeichnis, in das die endgültigen Ausgabe-Binärdateien (und alle Abhängigkeiten oder andere bereitstellbare Dateien) geschrieben werden.
Wenn Sie möchten, können Sie die tatsächlichen Verzeichnisse, die für beide Zwecke verwendet werden, in den Projekteinstellungen ändern.
Eine interessante Tatsache zum obj-Verzeichnis: Wenn Sie die Veröffentlichung in einem Webprojekt eingerichtet haben, werden die Dateien, die veröffentlicht werden, in obj \ Release \ Package \ PackageTmp bereitgestellt. Wenn Sie die Dateien selbst veröffentlichen möchten, anstatt die integrierte VS-Funktion zu verwenden, können Sie die Dateien abrufen, die Sie tatsächlich hier bereitstellen müssen, anstatt alle digitalen Ablagerungen im bin-Verzeichnis zu durchsuchen.
Seien Sie vorsichtig mit setupProjekten, wenn Sie sie verwenden. Visual Studio-Setup-Projekte werden eher Primary Outputaus dem objOrdner als aus dem Ordner gezogenbin .
Ich habe Anwendungen veröffentlicht, von denen ich dachte, dass sie verschleiert und in msiSetups signiert sind, bevor ich festgestellt habe, dass die bereitgestellten Anwendungsdateien tatsächlich weder verschleiert noch signiert sind, da ich das Post-Build-Verfahren für die binOrdner-Assemblys ausgeführt habe und auf den objOrdner abzielen sollte stattdessen Baugruppen.
Dies ist alles andere als intuitiv imho, aber der allgemeine setupAnsatz besteht darin, das Primary Outputdes Projekts zu verwenden, und dies ist der objOrdner. Ich würde es lieben, wenn jemand etwas Licht ins Dunkel bringen könnte.