如何从调用应用程序获取版本信息
我有一个用 C# 编写的 Web 应用程序,并在 IIS 下作为 dll 运行。
我还有一些通用代码编译为单独的程序集(dll)。该公共代码包含一个返回版本信息的函数(如下)。我如何修改此代码,以便它返回 Web 应用程序 DLL 的版本信息,而不是当前的通用代码 DLL?
...
private static Assembly _assy;
private static void CheckAssemblyInfoLoaded()
{
if (_assy == null)
{
_assy = Assembly.GetCallingAssembly();
}
}
public static string Version
{
get {
CheckAssemblyInfoLoaded();
Version v = _assy.GetName().Version;
return v.ToString();
}
}
...
I have a web application written in C# and running as a dll under IIS.
I also have some common code compiled to a separate assembly (dll). This common code contains a function that returns version information (as below). How can I modify this code so it returns the version information of the web app dll and NOT the common code dll as present ?
...
private static Assembly _assy;
private static void CheckAssemblyInfoLoaded()
{
if (_assy == null)
{
_assy = Assembly.GetCallingAssembly();
}
}
public static string Version
{
get {
CheckAssemblyInfoLoaded();
Version v = _assy.GetName().Version;
return v.ToString();
}
}
...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
Assembly.GetAssembly(Type type)
方法获取程序集引用,在该方法中传入该程序集中定义的任何对象的类型,例如Assembly.GetAssembly(typeof(MyClass)) ;
Get the assembly reference using the
Assembly.GetAssembly(Type type)
method, where you pass in the type of any object defined in that assembly, such asAssembly.GetAssembly(typeof(MyClass));
就我个人而言,我会放弃静态并将方法合并为一个。
在这种情况下,静态可能会产生一些不需要的结果。我还将属性更改为方法;个人设计选择。
您得到了错误的程序集,因为属性 get 方法会从同一程序集中的另一个方法反弹,从而更改调用者。
Personally, I'd drop the static and combine the method into one.
static in this scenerio could produce some unwanted results. I also changed the property to a method; a personal design choice.
Your getting the wrong assembly because the properties get method bounces off another method in the same assembly thereby changing the caller.