Mam 2 projekty Visual C++, które oba mają plik RC, w którym zdefiniowano wersję produktu pola. Jak mogę zrobić oba projekty, aby uzyskać tę wersję z globalnego miejsca? Globalny plik RC lub jakie rozwiązania są dostępne?Jak mogę udostępnić tę samą wersję produktu między dwoma projektami Visual C++?
Odpowiedz
To, co działa dobrze, to dodanie dwóch "przedmiotów rozwiązania". Jednym z nich jest plik .h, który zawiera #defines
niektóre ciągi wersji, a drugi to plik .rc z dołączonym znacznikiem .h i BLOCK "StringFileInfo"
, który używa definicji.
Poszczególne pliki zasobów dla każdego projektu używają TEXTINCLUDE
do wprowadzania zawartości pliku .rc rozwiązania. .
Jest wiele do podjęcia w Pokażę wam, co mam na myśli ...
1) Obie pozycje roztworu dodaje się jako tak:
2)version.h
ma kilka # definicji, które będą używane w VersionInfo.rc2
#define SOLUTIONFILEVERSION 1,00,0000,00000
#define SOLUTIONFILEVERSIONSTRING "1,00,0000,00000"
#define COPYRIGHT "Copyright 2012"
#define PRODUCTNAME "Your product name"
#define COMPANYNAME "Your company name"
3) VersionInfo.rc2 wykorzystuje definiuje
#include "version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION SOLUTIONFILEVERSION
PRODUCTVERSION SOLUTIONFILEVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", COMPANYNAME
VALUE "FileVersion", SOLUTIONFILEVERSIONSTRING
VALUE "LegalCopyright", COPYRIGHT
VALUE "ProductName", PRODUCTNAME
VALUE "ProductVersion", SOLUTIONFILEVERSIONSTRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
Będziemy chcieli nową linię na końcu tego pliku, aby kompilator zasobów szczęśliwy, gdy jest on włączony w następnym kroku.
Innym polem, które chcesz ustawić, jest "FileDescription", ale zwykle jest to zależne od projektu. Pamiętaj, że może to zawierać wszystko, co chciałbyś dzielić między swoje projekty.
4) Uwzględnij VersionInfo.rc2 w każdym procesie. Odbywa się to przez kliknięcie prawym przyciskiem myszy .rc każdego projektu w widoku Widok zasobów i wybranie Zasób Zawiera.
Dodaj do dyrektyw kompilacji : #include "../VersionInfo.rc2"
można to zrobić ręcznie poprzez dodanie następujących do pliku .rc projektu, ale to chyba lepiej niech Visual Studio zarządzać wszystko to może dla ciebie.
3 TEXTINCLUDE
BEGIN
"#include ""../VersionInfo.rc2""\r\n"
"\0"
END
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "../VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
Uff ... to był kęs. Ale teraz powinieneś być w stanie zmienić wersje swojego produktu z jednego miejsca.
dziękuję bardzo. Próbowałem Twojej sugestii, ale to nie działa. Stworzyłem plik version.h i utworzyłem definicje, a następnie utworzyłem plik VersionInfo.rc2 i umieściłem go w głównym pliku RC projektu. Dodałem również wersje version.h i VersionInfo.rc2 do projektu. Jedną z rzeczy, o której nie wspomniałeś, jest usunięcie plików wersji z głównego pliku RC. Zrobiłem to również. Podczas budowania projektu otrzymuję ostrzeżenia/błędy, a biblioteka dll opróżnia wszystkie pola, więc wygląda na to, że informacje o wersji nie są przekazywane. Nie wiem dokładnie, co robię źle. My IDE to Visual Studio 2009 – dbrasco
Wspominasz ustawienie FileDescription na podstawie jednego projektu. Wszelkie sugestie dotyczące tego? Czy może istnieć inny 'BLOCK" StringFileInfo "' w pliku .rc specyficznym dla projektu, oprócz tego udostępnionego? – CoderDennis
Poszedłem do przodu i próbowałem dodać blok informacji o drugiej wersji, który generuje błąd, jak podejrzewałem. Nadal poszukuje sposobu na uwzględnienie konkretnych wartości projektu. – CoderDennis
Ok, mam rozwiązanie.
musiałem dodać następujące także na dole pliku Odwołanie się projektu
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
Teraz wszystko działa świetnie. Dzięki
Cieszę się, że to działa. Zaktualizowałem ostatni krok w mojej odpowiedzi, mam nadzieję, że ułatwi to każdemu, kto podąży za mną w przyszłości. –
- 1. Jak udostępnić tę samą zmienną między modułami?
- 2. Jak zsynchronizować wersje między projektami Visual C#?
- 3. Udostępnianie kodu między dwoma różnymi projektami git
- 4. Jak mogę ukończyć tę implementację Celive-C funkcji kartezjańskiego produktu?
- 5. Udostępnianie kodu między dwoma projektami w git
- 6. Jak wymusić tę samą wersję pakietu Nuget w wielu projektach C#?
- 7. Jak wymienić tę samą postać kilka razy?
- 8. Jak mogę udostępnić źródło danych między wieloma projektami w Microsoft SQL Server 2005 Reporting Services i zachować Visual Studio "Podgląd"?
- 9. Nawigacja między projektami f # i C#
- 10. Visual Studio: jak zarządzać kodem współużytkowanym między projektami
- 11. udostępnianie tabeli bazy danych między dwoma projektami django
- 12. Jak uzyskać wersję produktu z widoku Razor
- 13. jak zmienić plik i wersję produktu pliku exe
- 14. Jak uzyskać aktualną wersję produktu w języku C#?
- 15. jak udostępnić jedną transakcję między wieloma wątkami
- 16. zrobić tę samą przestrzeń między przyciskami w linelayout
- 17. Jak mogę wysłać ciągi między dwoma komputerami?
- 18. Jak mogę obliczyć różnicę między dwoma ciągami?
- 19. Jak mogę się upewnić, że wszyscy moi hudsonowie budują niewolników sprawdzają tę samą wersję svn dla codziennej wersji?
- 20. Czy mogę wielokrotnie dodać tę samą funkcję DataRow do DataTable?
- 21. Klawiszowanie między projektami Xcode?
- 22. Jak udostępnić dane między niestandardowymi zadaniami Ant?
- 23. Klasy i nazw dzielą tę samą nazwę w C++
- 24. Jak udostępnić wartość etykiety między wieloma kompilacjami CruiseControl.NET?
- 25. Jak współdzielić właściwości między wieloma projektami Visual Studio? (szczególnie projekty C#)
- 26. można uruchomić wiele kontroli, ale tę samą metodę w C#
- 27. W Visual Studio Code Jak scalić między dwoma lokalnymi oddziałami?
- 28. Jak udostępnić stałą numeryczną między XAML i C# w silverlight
- 29. Ostrzeżenie: Pliki JAR Kotlin w ścieżce klas powinny mieć tę samą wersję
- 30. Jak przetestować tę samą instancję obiektu w JavaScript?
utworzyć globalną 'wersję.h' file i dołącz go z obu plików rc –
Myślę, że możesz tylko zmodyfikować informacje o wersji ręcznie tylko. – Healer
@aleguna można podać przykład, co musi być w pliku version.h? – dbrasco