2008-10-15 5 views
5

Mam rozwiązanie zawierające wiele projektów. Zmieniam tylko kod w jednym z nich, ale za każdym razem, gdy uderzę Ctrl + Shift + B, Visual Studio odbuduje wszystkie pozostałe.Znajdowanie nieaktualnych lub brakujących zależności lub plików wyjściowych w rozwiązaniu Visual C++ (lub: Dlaczego VS nalega na przebudowywanie projektów bez zmian?)

Chcę go zbudować inne projekty, więc to dobrze. To, co nie jest dobre, to normalnie, że nie ma nic do zrobienia. Mam gdzieś sporą zależność, więc to nie działa.

Czy istnieje narzędzie lub makro (lub przełącznik), które będzie eksplorować drzewo zależności i które pliki są nieaktualne, czy mogę je zatrzymać?

Wiem, że mogę rozwiązać ten konkretny przypadek, dotykając (na przykład) wszystkich plików projektu.

Niestety, często widziałem tę sytuację, gdy plik jest skonfigurowany do tworzenia pliku wyjściowego (np. Plik IDL jest skonfigurowany do wyprowadzania biblioteki typu, ale nie zawiera bloku "biblioteki", więc będzie nigdy nie twórz TLB).

Nie można tego rozwiązać przez dotknięcie wszystkich plików projektu, więc szukam czegoś bardziej ogólnego do dodania do mojego osobistego zestawu narzędzi, który z łatwością powie mi, dlaczego plik jest przebudowywany, niezależnie od tego, czy jest to spowodowane jest starszy niż zależność, lub dlatego, że projekt jest źle skonfigurowany, aby oczekiwać pliku wyjściowego, który nigdy nie zostanie wygenerowany.

+0

Dzięki za cynk o TLB bez bloku biblioteki! Nigdy bym tego nie znalazł. – thehouse

Odpowiedz

0

Choć nie bezpośrednio odpowiadając na moje pytanie: „Czy istnieje narzędzie, które będzie działać to dla mnie?”, Znalazłem konkretnego problemu za pomocą monitora SysInternals Process:

Projekt został skonfigurowany z/analizy, która wymaga Visual Studio Team Edition, ale wersja na tym komputerze to Visual Studio Professional, która go nie obsługuje. Niestety, pojawia się błąd w Visual Studio, który uważa, że ​​plik .pchast powinien zostać utworzony, nawet jeśli nie ma na to sposobu. Podniosłem to na Connectie.

myślę, że może napisać makro Visual Studio Professional, że jeśli/analizy jest włączona, po prostu tworzy pusty plik .pchast na koniec kompilacji ...

0

Nie, że znalazłem. Jeśli wiesz, że projekt nie będzie się często zmieniać, możesz poinformować program Menedżer konfiguracji, aby go nie budował. (Kliknij prawym przyciskiem myszy Rozwiązanie i wybierz Zarządzanie konfiguracją)

0

O ile mi wiadomo, ctrl + shift + b domyślnie jest przypisany do BuildSolution, dlatego właśnie budowane są wszystkie twoje projekty. nie jestem do końca pewien, czego jeszcze można użyć poza prawym kliknięciem projektu i naciśnięciem kompilacji :)

+0

Wszystkie projekty są budowane - tego właśnie chcę. Zazwyczaj narzędzie sprawdzania zależności spowoduje, że kompilator nie wykona niczego. To nie działa. –

0

Możesz chcieć sprawdzić Narzędzia> Opcja> Projekty i rozwiązania i sprawdzić, czy opcja jest ustawiona na Tylko buduj projekt startowy i zależności zamiast całego rozwiązania.

Albo zamiast używać ctrl + koszula + B należy po prostu nacisnąć klawisz F6 nad projektem, który chcesz zbudować :)

1

Jeśli rozumiem cię, można rozwiązać ten problem dotyka wszystkich plików Twojego projektu. Przyczyną może być plik źródłowy o czasie ostatniej modyfikacji, który jest w przyszłości.

Edit:

wiem, że mogę rozwiązać ten konkretny przypadek, przez (na przykład) dotyka wszystkich plików projektu, ale chciałbym dodać coś do mojego osobistego pole mijającym że Mogę użyć w przyszłości, w ogólnym przypadku.

Jestem zdezorientowany - jaki jest "ogólny przypadek" tego problemu?

+0

Zaktualizowałem oryginalne pytanie, aby było to bardziej jasne (mam nadzieję). –

+0

Naprawienie tytułu może również pomóc w uzyskaniu trafnych odpowiedzi. –

+0

Dobra uwaga. Zrobię to. –

0

Możesz użyć shift + F6, aby zbudować tylko bieżący projekt.

1

W Opcjach/projektach i rozwiązaniach/kompilacji i uruchom podkręcić szczegółowość wyjściową projektu MSBuild do Szczegółowy. Powinien dać ci pojęcie, dlaczego odbudowuje wszystkie projekty.

+0

To jest projekt C++, ustawienia gadatliwości MSBuild nie wydają się mieć żadnego wpływu. –

+0

Dziwne, byłem prawie pewien, że użyłem tego w przeszłości, aby dowiedzieć się zależności w C++, ale twoje prawo, działa tylko dla języków DotNet. –

Powiązane problemy