web-dev-qa-db-ja.com

プログラム内でのC#AssemblyFileVersionの使用

プログラムで作業していて、アセンブリを表示しようとしています[〜#〜] file [〜#〜]バージョン

    public static string Version
    {
        get
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
            return String.Format("{0}.{1}", fvi.FileMajorPart, fvi.FileMinorPart);
        }
    }

現時点では、これは「AssemblyFileVersion」ではなく、「AssemblyVersion」の最初の2つのバージョン番号のみを返します。これとアセンブリバージョンの両方を更新する必要がある "Version"と呼ばれる内部変数を保存するのではなく、単にAssemblyFileVersionを参照したいだけです。

[Assembly: AssemblyVersion("1.0.*")]
[Assembly: AssemblyFileVersion("3.5.0")]

これは、AssemblyInfo.csからのAssemblyFileVersionです。 「1.0。*」ではなく「3.5.x」の部分だけを参照したいのですが。

ありがとう、ザック

33
Zack

FileMajorPart/FileMinorPartの代わりにProductMajorPart/ProductMinorPartを使用します。

    public static string Version
    {
        get
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
            return String.Format("{0}.{1}", fvi.ProductMajorPart, fvi.ProductMinorPart);
        }
    }
34
Diadistis
using System.Reflection;
using System.IO;

FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);

Console.WriteLine("AssemblyVersion : {0}", Assembly.GetExecutingAssembly().GetName().Version.ToString());

Console.WriteLine ("AssemblyFileVersion : {0}" , fv.FileVersion.ToString ());
6
    var fileVersion = GetCustomAttributeValue<AssemblyFileVersionAttribute>(Assembly, "Version");

    private static string GetCustomAttributeValue<T>(Assembly assembly, string propertyName)
        where T : Attribute
    {
        if (Assembly == null || string.IsNullOrEmpty(propertyName)) return string.Empty;

        object[] attributes = Assembly.GetCustomAttributes(typeof(T), false);            
        if (attributes.Length == 0) return string.Empty;

        var attribute = attributes[0] as T;
        if (attribute == null) return string.Empty;

        var propertyInfo = attribute.GetType().GetProperty(propertyName);
        if (propertyInfo == null) return string.Empty;

        var value = propertyInfo.GetValue(attribute, null);
        return value.ToString();
    }
3
Mark Menchavez

現在実行中のアセンブリのバージョンを取得するには、次を使用できます。

using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;

Assemblyクラスは、ファイルを読み込んで、プロセスで読み込まれたすべてのアセンブリにアクセスすることもできます。

2
sipwiz

FileVersionInfoクラスを使用する必要があると思います。

System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)

1
shahkalpesh
 protected void Application_Start(object sender, EventArgs e)
 {
     _log.InfoFormat("*************{0} **** Version: {1}************  ", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version);
  }

出力

INFOグローバル-************* CustomerFile ****バージョン:1.0.17.2510 ************

0
makdu