2009-04-30 13 views

risposta

4

Ho scoperto una distinzione per questo file: ha a che fare con i valori riportati nelle chiamate a Assembly.GetReferencedAssemblies. Stavo lavorando per tenere traccia dei numeri di versione dei nostri binari dal nostro repository SVN inserendo i numeri di revisione in essi. Inizialmente anch'io stavo aggiornando AssemblyInfo.cpp e non trovavo nulla segnalato nella scheda dei dettagli delle proprietà del file per il binario. Sembrava che questo file non facesse nulla per me in termini di aggiornamento di quei dettagli, che era non il caso con aggiornamenti simili a AssemblyInfo.cs di csproj. Perché la differenza, giusto?

Ora in uno di questi csproj ci si riferisce a un vcxproj e che csproj scarica in un log le versioni di tutti i suoi assembly di riferimento utilizzando il metodo .NET Assembly.GetReferencedAssemblies. Quello che ho scoperto è che il numero riportato nel registro non era la versione di vcxproj fornita dalla risorsa VS_VERSIONINFO che ho aggiunto (che ottiene i dettagli della versione nella scheda dei dettagli delle proprietà del file). Invece il numero riportato corrispondeva effettivamente a quello definito nello AssemblyInfo.cpp.

Così per i file vcxproj Sembra VS_VERSIONINFO è in grado di aggiornare i contenuti che si trovano sotto le proprietà del file scheda Dettagli, ma AssemblyInfo.cpp è in grado di esporre la versione a GetReferencedAssemblies. In C# queste due aree di segnalazione sembrano essere unificate. Forse c'è un modo per indirizzare lo AssemblyInfo.cpp in modo che si propaghi nei dettagli del file, ma quello che finirò facendo è duplicare le informazioni di build in entrambe le posizioni in una fase di pre-costruzione. Forse qualcuno può trovare un approccio migliore.

1

Perché non correggere gli errori? Su quella nota, quali errori stai ottenendo?

Questo file fornisce informazioni come un numero di versione che è assolutamente necessario per utilizzare l'assembly che è stato creato.

+0

Gli errori sono descritti in http://stackoverflow.com/questions/810827/lnk2022-metadata-operation-failed-driving-me-insane ... per come il file è "decisamente necessario", beh sembra lavorare bene senza di essa?!? – demoncodemonkey

+0

Senza queste informazioni il compilatore non può determinare se l'assemblaggio è 1. quello giusto e 2. non aggiornato o meno. Il problema che hai collegato si riduce a una mancata corrispondenza tra le build dell'assembly. Neutralizzando non si ottiene più l'errore di disallineamento perché il compilatore non può dire che c'è una differenza. – NotMe

+0

Quindi, in effetti, non hai risolto il problema. Invece l'hai appena nascosto. – NotMe

1

Finora non ho mai avuto AssemblyInfo.cpp nelle mie DLL C++ gestite, quindi non penso sia necessario.

(Ho appena aggiunto il file per avere informazioni sulla versione per le mie DLL C++).