2011-12-21 18 views
17

Uzyskaj następujący błąd podczas łączenia mojego projektu w Delphi XE2. Odtwarzanie pliku .dproj nie pomaga.Wskazówka DCC: H2161 Ostrzeżenie: Zduplikowany zasób: Typ 24 (zdefiniowany przez użytkownika), ID 1; Zasób pliku ... zachowany; plik ... Zasób WindowsXP.res odrzucony

[DCC Hint] H2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File resource <filename>.res kept; file c:\program files\embarcadero\rad studio\9.0\lib\Win32\release\WindowsXP.res resource discarded.

Jak to naprawić? Dzięki za pomoc!

+0

Uwaga: Zauważyłem, że od co najmniej D2010 w górę (prawdopodobnie D2009 w górę), pamięć podręczna IDE czasami przeszkadza i można uzyskać powielone ostrzeżenia o zasobach w kompilacjach. Wykonaj kompilację i już ich nie ma. W dzisiejszych czasach, gdy widzę podwójne ostrzeżenie o zasobach, najpierw robię kompilację i rozpoczynam polowanie, jeśli to nie wyjaśnia. –

Odpowiedz

19

Masz więcej niż jeden manifest aplikacji powiązany z aplikacją. Może być tylko jeden i dlatego niektóre muszą zostać odrzucone. Nowoczesne wersje Delphi domyślnie łączą manifest na podstawie opcji projektu "Runtime themes". Prawdopodobnie połączono inny manifest, być może z okresu, w którym opracowałeś projekt we wcześniejszej wersji Delphi. Czy używasz komponentu TXPManifest przez przypadek?

Możesz usunąć manifest, który wyraźnie łączysz. Możesz też wyłączyć ustawienie kompozycji środowiska wykonawczego i zachować jawny manifest. W ten sposób kontrolujesz manifest. Osobiście tak to robię, ponieważ potrzebuję kontroli nad tym, co dokładnie dzieje się w manifeście.

+0

Dzięki. Ale nie wybrano żadnego motywu środowiska wykonawczego. Próbowałem usunąć jeden XPManifest na głównej formie - błąd nadal istnieje :( – Dmitry

+0

Musi być gdzieś inny manifest! To jest kwestia polowania to na dół –

+0

Wyszukaj według ciągu 'TXPManifest' nie wyświetla żadnych wyników dla wszystkich komponentów i plików projektu – Dmitry

-2

Usunięcie {$R *.res} ze źródła projektu pomaga. {$R *.res} jest ograniczony w Delphi XE2?

+0

To nie brzmi jak odpowiedź. Lepiej byłoby użyć opcji kompozycji wykonawczych w opcjach projektu, jeśli chcesz wpłynąć na główny zasób aplikacji. Poszukaj jednostki xpman, jak zasugerował Rob. –

+0

Usuwanie {$ R *.res} może mieć efekt "jak gdyby rozwiązany", jeśli umieścisz manifest w niestandardowym pliku RC/RES. Lepiej jest usunąć manifest z niestandardowego pliku RES zamiast usuwania całego odwołania do OZE. –

6

Miałem ten sam problem i trafiłem na tę stronę przez Google.

Usunięcie XPMan z klauzuli uses naprawiło to.

Znaleziono sprawcę za pomocą słowa "znajdź w plikach" z hasłem "xpman". Dziękuję Robowi Kennedy za zasugerowanie tego w komentarzu do odpowiedzi Davida.

+0

To samo dotyczy próbek dołączonych do Delphi Tokyo. Mają XPman na liście zastosowań; jeśli usuniesz zaznaczenie opcji "Włącz kompozycje uruchomieniowe", zostanie ono ponownie sprawdzone ;-) –