回答:
2つのオプション...アプリケーションの種類に関係なく、いつでも呼び出すことができます。
Assembly.GetExecutingAssembly().GetName().Version
Windowsフォームアプリケーションの場合、特に製品のバージョンを探す場合は、アプリケーションを介していつでもアクセスできます。
Application.ProductVersion
GetExecutingAssembly
アセンブリ参照に使用することは必ずしもオプションではありません。そのため、基になるアセンブリまたはアセンブリバージョンを参照する必要があるプロジェクトで静的ヘルパークラスを作成すると便利です。
// A sample assembly reference class that would exist in the `Core` project.
public static class CoreAssembly
{
public static readonly Assembly Reference = typeof(CoreAssembly).Assembly;
public static readonly Version Version = Reference.GetName().Version;
}
その後CoreAssembly.Version
、必要に応じてコード内をきれいに参照できます。
ClickOnce
言及されているバージョンを参照している場合はPublish
、プロジェクトのプロパティ内のタブで指定されています(つまり、AssemblyVersionまたはAssemblyFileVersionとは関係ありません)。
HomeController
ので、カミソリで、:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
MSDNでは、Assembly.GetExecutingAssemblyメソッド、メソッド「getexecutingassembly」についてのコメントです。パフォーマンス上の理由から、このメソッドは、設計時に現時点でどのアセンブリが実行されているかわからない場合にのみ呼び出す必要があります。
現在のアセンブリを表すAssemblyオブジェクトを取得するための推奨される方法Type.Assembly
は、アセンブリにある型のプロパティを使用することです。
次の例で説明します。
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
Console.WriteLine("The version of the currently executing assembly is: {0}",
typeof(Example).Assembly.GetName().Version);
}
}
/* This example produces output similar to the following:
The version of the currently executing assembly is: 1.1.0.0
もちろん、これはヘルパークラス「public static class CoreAssembly」の回答と非常に似ていますが、少なくとも1つのタイプの実行アセンブリがわかっている場合は、ヘルパークラスを作成する必要はなく、時間を節約できます。
using System.Reflection;
{
string version = Assembly.GetEntryAssembly().GetName().Version.ToString();
}
MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspxからのコメント:
このGetEntryAssembly
メソッドはnull
、マネージアセンブリがアンマネージアプリケーションから読み込まれたときに戻ることができます。たとえば、アンマネージアプリケーションがC#で記述されたCOMコンポーネントのインスタンスを作成する場合、プロセスのエントリポイントはマネージアセンブリではなくアンマネージコードであるため、GetEntryAssembly
C#コンポーネントからのメソッドの呼び出しはを返しますnull
。
GetEntryAssembly
(vs GetCallingAssembly
またはGetExecutingAssembly
)は、参照ライブラリ内から呼び出されたときに機能する唯一のもののようです。
ようやく落ち着きました typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
netstandard1.6アプリ。他のすべての提案された回答は部分的な解決策を提示しました。これが私が必要とするものを正確に私に与えた唯一のものです。
場所の組み合わせから供給:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
Product Version
GitVersionまたは他のバージョン管理ソフトウェアを介してバージョン管理を使用している場合は、こちらをお勧めします。
これをクラスライブラリ内から取得するには、次を呼び出しますSystem.Diagnostics.FileVersionInfo.ProductVersion
。
using System.Diagnostics;
using System.Reflection;
//...
var assemblyLocation = Assembly.GetExecutingAssembly().Location;
var productVersion = FileVersionInfo.GetVersionInfo(assemblyLocation).ProductVersion
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion