18

ポータブル クラス ライブラリとしてビルドしようとしている .NET 4.5 の次のコード行があります。目的は、アセンブリ バージョンを取得することです。

this.GetType().Assembly.GetName().Version.Major;

問題は、Assembly.GetName() が PCL で使用できないことです。PCL でアセンブリ バージョンを取得する方法はありますか?

Assembly.FullName を解析できることはわかっていますが、より良い解決策が必要です。

4

3 に答える 3

23
    public static string Version
    {
        get
        {
            var assembly = typeof(MyType).GetTypeInfo().Assembly;
            // In some PCL profiles the above line is: var assembly = typeof(MyType).Assembly;
            var assemblyName = new AssemblyName(assembly.FullName);
            return assemblyName.Version.Major + "." + assemblyName.Version.Minor;
        }
    }
于 2013-05-13T15:12:11.913 に答える
2

Silverlight ベースのプラットフォーム (Silverlight 4 以降、バージョン 8 より前の Windows Phone) をターゲットにしています。これらのプラットフォームは、このGetName()方法をサポートしていませんでした。これらのプラットフォームでは、次のような拡張メソッドを定義できます。

public static class AssemblyExtensions
{
    public static AssemblyName GetName(this Assembly assembly)
    {
        return new AssemblyName(assembly.FullName);
    }
}
于 2013-05-14T03:58:32.300 に答える