如何获得使用过的dll的版本

Mar*_*acz 4 .net c# dll

我正在研究使用公共库的一组webpart.
要测试部署,我需要在生成的html中添加版本信息.向页面添加版本"水印"的方法在公共库中.

所以我有这样的东西(它更复杂,因为在公共库中是webparts的基类,但对于这个问题,我们可以简化它):

在mainAssembly.dll的控制下,我正在调用OnInit方法:

protected override void OnInit(EventArgs e)  
{  
..  
    Library.AddWatermark(this);  
..  
}
Run Code Online (Sandbox Code Playgroud)

在共同的图书馆我有:

public void AddWatermark(Control ctrl)  
{    
    string assemblyVersion = GetAssemblyVersion();  
    ctrl.Controls.Add(new HiddenField { Value = string.Format("Version: {0}",   assemblyVersion ) });  
}  
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:当我们在这个组件的方法中时如何获得组装版本?(在AddWatermark中)?如果有可能获得调用者程序集的版本?(mainAssembly)

Kyr*_*o M 7

调用程序集的版本:

Assembly assem = Assembly.GetCallingAssembly();
AssemblyName assemName = assem.GetName();
Console.WriteLine(assemName.Version.Major);
Console.WriteLine(assemName.Version.Minor);
Run Code Online (Sandbox Code Playgroud)

获取当前程序集的版本替换第一行代码

Assembly assem = Assembly.GetExecutingAssembly();
Run Code Online (Sandbox Code Playgroud)