我正在处理使用公共库的一组webpart 要测试部署,我需要在生成的html中添加版本信息。向页面添加版本“水印”的方法在公共库中。
所以我有这样的东西(它更复杂,因为在常见的库中是webparts的基类,但是对于这个问题,我们可以简化它):
在mainAssembly.dll的控制下,我正在调用OnInit方法:
protected override void OnInit(EventArgs e)
{
..
Library.AddWatermark(this);
..
}
在公共图书馆我有:
public void AddWatermark(Control ctrl)
{
string assemblyVersion = GetAssemblyVersion();
ctrl.Controls.Add(new HiddenField { Value = string.Format("Version: {0}", assemblyVersion ) });
}
所以我的问题是:当我们从这个程序集中获取方法时如何获得程序集的版本? (在AddWatermark中)?如果有可能获得调用者程序集的版本? (mainAssembly)
答案 0 :(得分:7)
来电者汇编的版本:
Assembly assem = Assembly.GetCallingAssembly();
AssemblyName assemName = assem.GetName();
Console.WriteLine(assemName.Version.Major);
Console.WriteLine(assemName.Version.Minor);
要获取当前程序集的版本,请使用
替换第一行代码Assembly assem = Assembly.GetExecutingAssembly();
答案 1 :(得分:3)
尝试使用
Assembly.GetCallingAssembly();
Assembly.GetExecutingAssembly();