Es AssemblyInfo
gibt zwei Baugruppenversionen:
AssemblyVersion
: Geben Sie die Version der Assembly an, die zugeordnet werden soll.AssemblyFileVersion
: Weist einen Compiler an, eine bestimmte Versionsnummer für die Win32-Dateiversionsressource zu verwenden. Die Win32-Dateiversion muss nicht mit der Versionsnummer der Assembly übereinstimmen.
Ich kann das Assembly Version
mit der folgenden Codezeile bekommen:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Aber wie kann ich das bekommen Assembly File Version
?
c#
.net
assemblies
version
Enyra
quelle
quelle
Antworten:
Siehe meinen Kommentar oben und bitte um Klarstellung, was Sie wirklich wollen. Hoffentlich ist es das:
quelle
FileVersionInfo
nurstring
Eigenschaften und keineVersion
Eigenschaften?Assembly.GetEntryAssembly()
NULL zurück, beispielsweise im Kontext von Office-Add-Ins und auch in vielen anderen Fällen. Wenn Sie an Addins / Plugins denken, ist EntryAssembly die Host-Anwendung, und meistens möchten Sie die Version von YourCode (TM) :) Abgesehen davon lohnt es sich, diese Antwort zu ergänzen,assembly.Location
die in der Antwort ebenfalls null sein kann (dh der erste zufällige Fall wurde gegoogelt: github.com/Azure/azure-functions-host/issues/1233 ) und das passiert wahrscheinlich noch häufiger als eine Null-Eintrags-Assembly.Es gibt drei Versionen : Assembly , Datei und Produkt . Sie werden von verschiedenen Funktionen verwendet und nehmen unterschiedliche Standardwerte an, wenn Sie sie nicht explizit angeben.
quelle
string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString(); string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
[assembly: AssemblyVersion("2.0.*")]
für die Verwendung von fileVersion ===[assembly: AssemblyFileVersion("2.0.*")]
und für die Verwendung von productVersion ===[assembly: AssemblyInformationalVersion("2.0.*")]
Die letzte kann ausSemVer
Kompatibilitätsgründen das Zeichenfolgensuffix verwenden :[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
Möglicherweise wird die*
Suffixnotation nicht verwendet. :( Es braucht alle vier Zahlen.[assembly: AssemblyFileVersion("2.0.0.1")]
Wenn ich auf die Anwendungsdateiversion zugreifen möchte (was unter Baugruppeninformationen -> Dateiversion festgelegt ist), z. B. um beim Laden des Formulars den Text eines Etiketts festzulegen, um die Version anzuzeigen, die ich gerade verwendet habe
quelle
UPDATE: Wie von Richard Grimes in meinem zitierten Beitrag @Iain und @Dmitry Lobanov erwähnt, ist meine Antwort theoretisch richtig, in der Praxis jedoch falsch.
Wie ich mich aus unzähligen Büchern usw. hätte erinnern sollen, werden diese Eigenschaften
[assembly: XXXAttribute]
vom Compiler hochgesteckt und in dieVERSIONINFO
Ressource gestellt , während man sie mit dem festlegt .Aus dem oben genannten Grund müssen Sie den Ansatz in der Antwort von @ Xiaofu verwenden, da die Attribute entfernt werden, nachdem das Signal aus ihnen extrahiert wurde.
(Von http://bytes.com/groups/net/420417-assemblyversionattribute - wie dort angegeben, wenn Sie nach einem anderen Attribut suchen, ersetzen Sie dieses durch das oben genannte.)
quelle
AssemblyName.Version
Eigenschaft abgerufen werden . Aber mit jedem anderen Attribut ist es der richtige WegAssemblyInformationalVersionAttribute
anstelle vonAssemblyVersionAttribute
.net Core 3.1Benutze das:
Oder dieses:
quelle