Versionsinformation in managed C++ assemblies

Guten Tag,

kürzlich ist mir aufgefallen, dass in einer managed C++ assembly die in Visual Studio erzeugt wurde keine Versionsinformation im klassischen Sinne vorliegt. D.h. tools die die Versionsinformation einer DLL auswerten – wie z.B. Programme die Setups erzeugen – finden keine Versionsinformation und auch der Windows Explorer zeigt keine Versionsinformation an. Dies ist etwas irritierend, da das Projekt ja eine Datei AssemblyInfo.cpp enthält, die genau die Informationen beinhaltet, die man als Versionsinformation betrachten würde. Bei einer C# assembly klappt es ja auch! Dort wird der Inhalt von AssemblyInfo.cpp wie erwartet von allen tools als Versionsinformation erkannt.

Wie man z.B. hier lesen kann wird die Versionsinformation als resource in einem bestimmten Format in der DLL erwartet. In einer managed C++ assembly wird eine solche resource nicht automatisch erzeugt!
Die Information aus AssemblyInfo.cpp wird lediglich für die .NET-interne Verwaltung von assemblies benutzt.

Als Lösung bleibt lediglich selbst eine Versions-resource hinzuzufügen. Dies geht einfach über das Kontexmenü für die assembly: Einfügen/Resource dann im erscheinenden Dialog “Resource hinzufügen” als Typ “Version” auswählen.

Das eigentlich Problem bei dieser Vorgehensweise ist dass die Version nun redundant in der assembly vorhanden ist und es dem Entwickler obliegt die Information konsistent zu halten. Glücklicherweise liegen beide Quellen als normale Textfiles vor so dass man ein kleines Skript oder Programms schreiben kann, dass als “Präbuildereignis”gestartet werden kann und bei Bedarf eine der beiden Dateien aus der anderen aktualisiert (sinnvollerweise sollte man AssemblyInfo.cpp als “master” verwenden da dort noch weitere Information eingetragen ist).
Es wäre interessant zu wissen, ob Microsoft für diese Entscheidung Gründe hatte oder ob das Erzeugen der Versions-resource lediglich vergessen wurde.

Viele Grüße,
Andreas

2 Responses to “Versionsinformation in managed C++ assemblies”

  1. Andreas G. Says:

    Vielen Dank für dieses Blogpost!
    Genau das gleiche Problem habe/hatte ich auch ;) .

  2. Andreas A. Says:

    Hallo Andreas,
    freut mich, wenn’s geholfen hat.
    Viele Grüsse, Andreas A.

Leave a Reply