2013-01-16 23 views
5

Piszę narzędzie, które sprawdza moje drzewo źródłowe w poszukiwaniu projektów .vcproj i .csproj (VS2005). Chcę wiedzieć, czy każdy projekt jest projektem aplikacji, biblioteki DLL lub statycznej biblioteki lib.Jak sprawdzić, czy plik projektu Visual Studio reprezentuje projekt aplikacji, biblioteki DLL lub biblioteki statycznej?

Dla C#, myślę, że to pytanie ma odpowiedź (How do you tell the Visual Studio project type from an existing Visual Studio project), ale nie mogę znaleźć oczywistego równoległego w projektach C++. W miarę możliwości wolę coś, co mogę wykorzystać jako proste wyszukiwane hasło w tekście.

+0

W 2012 roku jest to ' Application', w 'PropertyGroup' z' Label = "Configuration" '. Zauważ, że może się zmienić w zależności od wybranej konfiguracji projektu - musisz więc mieć możliwość wyboru odpowiedniej. –

+2

Jestem przekonany, że w 2010 roku bardzo dużo się zmieniły w C++ –

+0

Aby dokładnie sprawdzić, jakie rozwiązanie wykorzystasz, możesz zweryfikować dany typ projektu, klikając projekt prawym przyciskiem myszy, wybierając opcję "Właściwości" -> "Właściwości konfiguracji". > 'Ogólne'->' Typ konfiguracji' (w "Domyślnych ustawieniach projektu") – bunkerdive

Odpowiedz

5

Należy przeanalizować atrybut "ConfigurationType" w pliku .vcproj. Atrybut elementu <VisualStudioProject><Configurations><Configuration>. To jest "2" dla projektu DLL, "4" dla statycznego projektu biblioteki. Pamiętaj, że różne konfiguracje mogą mieć różne wartości dla tego atrybutu, chociaż będzie to bardzo nietypowe.

Generalnie wykonuj inżynierię wsteczną, tworząc kopię pliku .vcproj, zmieniaj stronę Project + Property, użyj File + SaveAll, a następnie porównaj dwa pliki .vcproj, aby zobaczyć, co się zmieniło.

Uważaj, aby włożyć dużo wysiłku w tak starą wersję Visual Studio. Osiem lat to bardzo dużo czasu w inżynierii oprogramowania, zwłaszcza po wydaniu standardu C++ 11. Format pliku projektu C++ radykalnie zmienił się na VS2010, teraz plik .vcxproj, który połączył się z resztą języków w VS, wspierając kompilacje za pomocą MSBuild. Będziesz musiał to wszystko powtórzyć, kiedy pewnego dnia zmienisz wersję VS. Lepiej rób to teraz, ponieważ na pewno nie będzie to łatwiejsze, gdy będziesz musiał polegać na swoim narzędziu.

+0

Aktualizowanie jest zależne od czynników zewnętrznych, więc w tym przypadku dobrze jest dodać "zaktualizuj to małe narzędzie" do listy testowej _long_, kiedy pewnego dnia się poruszyliśmy do 2010 lub później :) –

+0

ConfigurationType = "1" jest dla aplikacji lub projektu exe. – Nathan

Powiązane problemy