Stworzyłem nowy projekt w Visual Studio 2010 i zauważył, że istnieją obecnie dwa nowe foldery o nazwie obj
i bin
moim katalogu projektu.
Podobna para folderów jest tworzona podczas budowania i debugowania - do czego służą te foldery?
źródło
Stworzyłem nowy projekt w Visual Studio 2010 i zauważył, że istnieją obecnie dwa nowe foldery o nazwie obj
i bin
moim katalogu projektu.
Podobna para folderów jest tworzona podczas budowania i debugowania - do czego służą te foldery?
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 dobin
.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ę.
źródło
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.
źródło
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.
źródło
Uważaj na
setup
projekty, jeśli ich używasz; Projekty instalacyjne programu Visual Studio sąPrimary Output
pobierane zobj
folderu, a nie zbin
.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 wbin
zestawach folderów i powinienem był celować wobj
folder zamiast tego zespoły.Jest to dalekie od intuicyjnego imho, ale ogólne
setup
podejście polega na użyciuPrimary Output
projektu i jest toobj
folder. Bardzo bym chciała, gdyby ktoś mógł rzucić nieco światła na to btw.źródło