2009-04-30 16 views

Odpowiedz

4

Odkryłem jedno wyróżnienie dla tego pliku: ma to związek z wartościami zgłoszonymi pod wywołaniami Assembly.GetReferencedAssemblies. Pracowałem nad śledzeniem numerów wersji naszych plików binarnych z naszego repozytorium SVN poprzez umieszczenie w nich numerów wersji. Początkowo też aktualizowałem AssemblyInfo.cpp i nie znalazłem niczego, co podano w zakładce szczegółów pliku pliku binarnego. Wygląda na to, że ten plik nic dla mnie nie zrobił, jeśli chodzi o aktualizowanie tych szczegółów, co w przypadku z podobnymi aktualizacjami do csproj'a AssemblyInfo.cs było , a nie. Dlaczego różnica jest właściwa?

Teraz w jednym z takich csproj mamy odniesienie do vcxproj i że csproj zrzuca do logu wersje wszystkich odwołanych złożeń za pomocą metody .NET Assembly.GetReferencedAssemblies. Odkryłem, że numer zgłoszony w tym dzienniku nie był wersją vcxproj podaną przez zasób VS_VERSIONINFO, który dodałem (co powoduje, że szczegóły wersji znajdują się w zakładce szczegółów właściwości pliku). Zamiast tego zgłoszona liczba faktycznie pasowała do tej zdefiniowanej w AssemblyInfo.cpp.

Tak więc dla plików vcxproj wygląda na to, że VS_VERSIONINFO jest w stanie zaktualizować zawartość znajdującą się pod zakładką szczegółów właściwości pliku, ale AssemblyInfo.cpp może wystawiać wersję na GetReferencedAssemblies. W języku C# te dwa obszary raportowania wydają się być zunifikowane. Być może istnieje sposób, aby skierować AssemblyInfo.cpp do propagacji w szczegóły pliku w pewien sposób, ale co mam zamiar skończyć robi jest duplikowanie informacji o kompilacji do obu lokalizacji w etapie budowania. Może ktoś może znaleźć lepsze podejście.

1

Dlaczego nie naprawiać błędów? W tej notatce, jakie błędy dostaniesz?

Ten plik zawiera informacje, takie jak numer wersji, który jest absolutnie niezbędny do użycia złożonego zestawu.

+0

Błędy są opisane w http://stackoverflow.com/questions/810827/lnk2022-metadata-operation-failed-driving-me-insane ... jeśli chodzi o to, jak plik jest "zdecydowanie potrzebny", wydaje się, że działa bez niego?!? – demoncodemonkey

+0

Bez tych informacji kompilator nie może określić, czy złożenie ma wartość 1. i 2. jest nieaktualna, czy nie. Problem, z którym się łączysz, sprowadza się do niedopasowania między kompilacjami zespołu. Po jego sterylizacji nie ma już błędu niezgodności, ponieważ kompilator nie może stwierdzić, że istnieje różnica. – NotMe

+0

W efekcie nie rozwiązałeś problemu. Zamiast tego właśnie to ukryłeś. – NotMe

1

Do tej pory nigdy nie miałem AssemblyInfo.cpp w moich bibliotekach zarządzanych C++, więc nie sądzę, że jest to konieczne.

(Właśnie dodałem plik, aby uzyskać informacje o wersji dla moich bibliotek dll C++).

Powiązane problemy