Wie bekomme ich die ausführende assembly-version?
Ich versuche, die ausführende assembly-version in C# 3.0 mit dem folgenden code:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
Ist da ein richtiger Weg, dies zu tun?
InformationsquelleAutor user1 | 2011-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Optionen... unabhängig von der Art der Bewerbung Sie können immer invoke:
Wenn ein Windows Forms Anwendung, können Sie immer Zugriff über Anwendung, wenn speziell für die Produkt-version.
Mit
GetExecutingAssembly
für eine assembly-Referenz ist nicht immer eine option. Als solche, ich persönlich finde es auch nützlich, um eine statische helper-Klasse in Projekten, bei denen ich möglicherweise Verweis auf die zugrunde liegende Montage-oder assembly-version:Dann kann ich sauber Referenz
CoreAssembly.Version
in meinem code, wie erforderlich.System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
Was auch interessant wäre: Wo müssen Sie angeben, das ist die aktuelle version? Ich angegebenen die AssemblyVersion und AssemblyFileVersion in meine AssemblyInfo.cs und alle, die ich von der abovemethod Aufruf: 0.0.0.0, trotz angegebenen 1.0.0
Wenn Sie beziehen sich auf die
ClickOnce
version erwähnt von @Justin, es ist angegeben auf derPublish
- Registerkarte innerhalb der Projekt-Eigenschaften (D. H., nicht mit AssemblyVersion oder AssemblyFileVersion).danke für die Antwort, ich weiß nicht, was ClickOnce ist, aber es stellte sich heraus bei der Bearbeitung der Datei AssemblyInfo über VS dann ist es plötzlich geklappt oO. Die Bearbeitung der AssemblyInfo.cas manuell in einem text-editor alle Felder wiederum leer aus. So oder so, es ist gelöst jetzt 🙂
Es ist erwähnenswert, dass dies nicht funktioniert in ASP.NET MVC-Anwendungen, wegen der Einführung Kontext. Ein workaround ist zu verweisen auf eine bekannte Art in Ihre website-Montage, z.B. die allgegenwärtige MVC
HomeController
, so in Razor:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
InformationsquelleAutor Chris Baxter
In der MSDN -Montage.GetExecutingAssembly-Methode, ist die Bemerkung über die Methode "getexecutingassembly", dass aus performance-Gründen sollten Sie diese Methode aufrufen, nur, wenn Sie nicht wissen, die zur design-Zeit was Montage ist die derzeit ausgeführt werden.
Ist der empfohlene Weg, um ein Assembly-Objekt repräsentiert die aktuelle Baugruppe ist die Verwendung der
Type.Assembly
Eigenschaft von einem Typ gefunden, der in die Versammlung.Das folgende Beispiel zeigt:
Dies ist natürlich sehr ähnlich zu der Antwort mit der helper-Klasse "public static class CoreAssembly", aber, wenn Sie wissen, mindestens eine Art der Ausführung der Montage, ist es nicht obligatorisch, eine helper-Klasse, und es spart Ihre Zeit.
InformationsquelleAutor Sharunas Bielskis
Bemerkungen aus der MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspx:
Die
GetEntryAssembly
- Methode zurückgeben kannnull
wenn Sie eine verwaltete assembly geladen wurde, aus einer nicht verwalteten Anwendung. Zum Beispiel, wenn eine nicht verwaltete Anwendung erstellt eine Instanz einer COM-Komponente in C# geschrieben, ein Aufruf an dieGetEntryAssembly
Methode aus der C# - Komponente gibtnull
, weil der Einstieg in den Prozess wurde nicht verwaltetem code, anstatt einer verwalteten assembly.GetEntryAssembly
(vsGetCallingAssembly
oderGetExecutingAssembly
) scheint zu sein, das einzige, was funktioniert, wenn der Aufruf aus einer Referenz-Bibliothek.InformationsquelleAutor Hammad Qureshi
Dies tun sollte:
InformationsquelleAutor Elroy Flynn
Ich schließlich ließ sich auf
typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
für eine netstandard1.6 app. Alle anderen vorgeschlagenen Antworten präsentiert eine Teillösung. Dies ist die einzige Sache, die mich genau das, was ich brauchte.Stammen aus einer Kombination von Orten:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs. 110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs. 110).aspx
InformationsquelleAutor Victor Ude