Hi,
ich hab Momentan folgendes Problem: Ich will von einer Exe-Datei die Eigenschaft "Produktname" auslesen. Über den Windowsexplorer findet man diese per Rechtsklick -> Eigenschaften -> Version -> Produktname. Die Frage ist jetzt, wie kann ich diese Eigenschaft per C# abfragen. Mit FileInfo und dem Zeugs komm ich da irgendwie net weiter.
Gruß
Roland
using System;
using System.Reflection;
[assembly: AssemblyTitle("C#")]
[assembly: AssemblyDescription("C# Language")]
namespace AttributeExample
{
public class Program
{
public static void Main()
{
Assembly SampleAssembly = Assembly.Load(Assembly.GetExecutingAssembly().Full Name);
foreach (Attribute a in SampleAssembly.GetCustomAttributes(true))
{
if (a is AssemblyTitleAttribute)
Console.WriteLine("Assembly Title: " + (a as AssemblyTitleAttribute).Title);
if (a is AssemblyDescriptionAttribute)
Console.WriteLine("Assembly Description: " + (a as AssemblyDescriptionAttribute).Description);
}
}
}
}
Quelle: http://bytes.com/groups/net-c/276704-how-read-assemblyinfo-cs
Du willst das AssemblyProductAttribute auslesen.
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!
YARRRRRR!
hm... genau, an sowas hab ich auch schonmal gedacht.
Was mir an der Lösung net gefällt, ist, dass man dafür die komplette Assembly laden muss - Obwohl man ja eigentlich bloß diese eine Eigenschaft auslesen will.
man dafür die komplette Assembly laden muss - Obwohl man ja eigentlich bloß diese eine Eigenschaft auslesen will
Die Eigenschaften stehen nunmal halt in der Assembly drin. Wenn du eine seperate AppDomain verwendest, kannst du auch die Assembly danach wieder entladen.
Am besten noch du verwendest zum Laden Assembly..::.ReflectionOnlyLoadFrom-Methode
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Hi,
Alternativ könntest du auch das FileVersionInfo-Objekt aus dem System.Diagnostics Namespace verwenden. Das kann auch den Produktnamen, Copyright, etc. ausgeben:
System.Diagnostics.FileVersionInfo fi = System.Diagnostics.FileVersionInfo.GetVersionInfo(Application.ExecutablePath);
Console.WriteLine(fi.ProductName);