Odpowiedzi:
obj
Folder posiada obiekt lub pośredni, pliki , które zostały skompilowane pliki binarne, które nie zostały jeszcze połączone. Są to w zasadzie fragmenty, które zostaną połączone w celu uzyskania ostatecznego pliku wykonywalnego. Kompilator generuje jeden plik obiektowy dla każdego pliku źródłowego, a pliki te są umieszczane w obj
folderze.
W bin
folderze znajdują się pliki binarne , które są rzeczywistym kodem wykonywalnym aplikacji lub biblioteki.
Każdy z tych folderów jest dalej podzielony na foldery Debug
i Release
foldery, które po prostu odpowiadają konfiguracjom kompilacji projektu. Dwa typy plików omówione powyżej są umieszczane w odpowiednim folderze, w zależności od rodzaju wykonywanej kompilacji. Ułatwia to ustalenie, które pliki wykonywalne są zbudowane z symbolami debugowania, a które z włączonymi optymalizacjami i gotowe do wydania.
Pamiętaj, że możesz zmienić miejsce, w którym program Visual Studio wyświetla pliki wykonywalne podczas kompilacji we właściwościach projektu. Możesz także zmienić nazwy i wybrane opcje dla konfiguracji kompilacji.
obj
naprawdę zawiera tylko niepowiązane pliki kodu obiektowego? Z mojego doświadczenia wynika, że zawiera wszystkie z nich, a na ostatnim etapie budowy, pliki, które są częścią „ostatecznego zestawu” są kopiowane do bin
.
Zachęcam do obejrzenia tego filmu na YouTube, który pokazuje różnicę między folderami C # bin i obj, a także wyjaśnia, w jaki sposób czerpiemy korzyści z kompilacji przyrostowej / warunkowej.
Kompilacja w C # jest procesem dwuetapowym, więcej szczegółów znajduje się na poniższym diagramie:
Jeśli porównasz katalog bin i obj, w katalogu „obj” znajdziesz większą liczbę plików, ponieważ zawiera on osobne skompilowane pliki kodu, a „bin” ma jedną jednostkę.
obj
Katalog jest dla pośrednich plików obiektowych i innych nieustalonych plików danych, które są generowane przez system kompilatora lub zbudować w trakcie kompilacji. bin
Katalog jest katalogiem, że ostateczne wyjście binarne (i wszelkie zależności lub inne pliki rozmieszczenia) zostaną zapisane.
Jeśli chcesz, możesz zmienić rzeczywiste katalogi używane do obu celów w ustawieniach projektu.
Ciekawy fakt na temat katalogu obj: Jeśli publikowanie zostało skonfigurowane w projekcie internetowym, pliki, które zostaną opublikowane, są przenoszone do obj \ Release \ Package \ PackageTmp. Jeśli chcesz samodzielnie opublikować pliki, a nie korzystać ze zintegrowanej funkcji VS, możesz pobrać pliki, które faktycznie musisz wdrożyć tutaj, zamiast wybierać wszystkie cyfrowe śmieci z katalogu bin.
Uważaj na setup
projekty, jeśli ich używasz; Projekty instalacyjne programu Visual Studio są Primary Output
pobierane z obj
folderu, a nie z bin
.
Wydawałem aplikacje, które wydawały mi się zaciemnione i zalogowałem się w msi
konfiguracjach przez dłuższy czas, zanim odkryłem, że wdrożone pliki aplikacji nie były w rzeczywistości ani zaciemnione, ani podpisane, gdy wykonuję procedurę po kompilacji w bin
zestawach folderów i powinienem był celować w obj
folder zamiast tego zespoły.
Jest to dalekie od intuicyjnego imho, ale ogólne setup
podejście polega na użyciu Primary Output
projektu i jest to obj
folder. Bardzo bym chciała, gdyby ktoś mógł rzucić nieco światła na to btw.