在非mvc应用程序的网页上显示汇编版本
本文关键字:显示 汇编 版本 网页 mvc 应用程序 在非 | 更新日期: 2023-09-27 18:11:13
我们有一个不使用MVC的web应用程序。这个web应用程序已经在使用Assembly.cs。在我的c#代码中,我可以获得web应用程序的版本号,但如何在网页(.cshtml)中获得它?
我试过使用
@System.Reflection.Assembly.GetExecutingAssembly().GetName();
但是它返回
t0cxczo0, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
不熟悉。
当我使用
@typeof(MyApp.Application).Assembly.GetName()
它编译得很好,但是在运行时我得到
"Cannot find namespace MyApp"
MyApp是我的应用程序的名称,application是我的一个类。
我也试过
@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(MyApp.Application).Assembly.Location).ProductVersion
但是这也会返回"Cannot find namespace MyApp"错误。
我的web应用程序使用了一些其他自制的二进制文件,这些文件可以在其他web应用程序中重用。当我使用
@System.Reflection.Assembly.GetCallingAssembly().GetName()
我正在获取处理模板的其他程序集的名称和版本。我离目标越来越近了;)
当我使用
@System.Reflection.Assembly.GetEntryAssembly().GetName()
我得到一个"模板执行"错误
当我使用
@HttpContext.Current.ApplicationInstance
我得到一个错误关于HttpContext不存在。
你试过吗?
使用
using System.Reflection
using System.Diagnostics
在你的c#代码中
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fileVersionInfo.ProductVersion;
是我们目前在一个应用程序中使用的。然后,我们将变量"version"赋值给控件(webforms)或ViewBag变量。
如果你需要将它传递给ajax请求,我建议在你的c#代码中使用webmethod。
[System.Web.Services.WebMethod]
public static string GetCurrentAssembly()
{
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fileVersionInfo.ProductVersion;
return version;
}
然后通过客户端调用它,使其可用于您的页面。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript">
function ShowCurrentAssembly() {
$.ajax({
type: "POST",
url: "CS.aspx/GetCurrentAssembly",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
}
function OnSuccess(response) {
alert(response.d);//you can replace this with code to populate an html element
}
</script>
进一步说明:http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx
这可能不是最通用的选项,但以下代码在我的情况下是有效的:
var uri = new Uri(System.Reflection.Assembly.GetCallingAssembly().CodeBase);
var baseDir = System.IO.Path.GetDirectoryName(uri.LocalPath);
if (baseDir != null)
{
var appLocation = System.IO.Path.Combine(baseDir, "MyApp.dll");
version = System.Diagnostics.FileVersionInfo.GetVersionInfo(appLocation).FileVersion;
}
只是因为GetCallingAssembly是另一个dll,它在我的bin文件夹