|
|
1
48
下面是我使用的一些代码,它支持从Web或非Web应用程序获取应用程序的“主”程序集,然后可以使用getname().version获取版本。 它首先尝试对非Web应用程序使用getEntryassembly()。这将在ASP.NET下返回空值。 然后查看httpContext.current以确定这是否是Web应用程序。然后,它使用当前httphandler的类型-但如果使用aspx页进行调用,则此类型的程序集可能是生成的ASP.NET程序集,因此它将遍历httphandler的baseType链,直到找到不在ASP.NET用于生成类型(“asp”)的命名空间中的类型。 这通常是主程序集中的一个类型(例如代码隐藏文件中的页面)。然后我们可以使用这种类型的程序集。 如果所有其他操作都失败,则返回到getExecutingAssembly()。 这种方法仍然存在潜在的问题,但它在我们的应用程序中有效。
|
|
|
2
35
我发现获得“主”程序集(而不是动态程序集)版本的最简单的一种线性方法是:
使用顶级类,它不太可能“改变其含义”,也不可能作为重构工作的一部分被替换,例如
|
|
|
3
26
我更喜欢web.config来存储站点的当前版本。 您还可以尝试在Web应用程序根目录中创建具有以下内容的assemblyinfo.cs文件:
然后通过如下代码访问值:
这里还有更多 informaiton 在assemblyinfo类上。 |
|
|
4
14
添加到已发布的响应程序。为了在ASP.NET Web应用程序中获取程序集版本,需要在代码隐藏文件中放置一个方法,类似于:
在ASPX页面中,您只需在以下位置显示版本号:
|
|
|
5
8
以防万一有人仍然感兴趣;这应该是个骗局,而且应该比仅仅采取
global.asax总是编译为与assemblyinfo.cs中的assembly属性相同的程序集,因此这对于定义global.asax的所有Web应用程序都有效。
对于那些没有定义自己的global.asax的用户,它将返回到生成的版本
奖金;使用
|
|
|
6
6
httpContext.current.applicationInstance是从global.asax.cs中的类派生的。您可以执行以下操作
它同时在ASP.NET(ASPX)和ASP.NET MVC中工作 |
|
|
7
4
我遇到了一个类似的问题,认为您可能会发现解决方案是有用的。 我需要从一个自定义服务器控件报告当前应用程序版本(Web应用程序项目),其中服务器控件包含在另一个库中。问题是“最简单”的装配getter没有提供正确的装配。
使用手头的程序集引用,可以通过其名称钻取到版本:
现在,这个解决方案可以工作了,因为我从应用程序集引用了一个类型。我们不使用任何这样的页面 不 从代码背后继承,所以它对我们来说是有效的,但是如果您的组织的编码实践不同,您的里程可能会有所不同。 快乐编码! |
|
|
8
2
|
|
|
9
1
这里有一些信息: http://www.velocityreviews.com/forums/showpost.php?p=487050&postcount=8
但我写了一个简单的方法:
|
|
|
10
1
如果您是从Web控件中查找此代码,则有一种方法是查找代码隐藏页的类型(即继承自System.Web.UI.Page的类)。这通常在消费者的Web部件中。
我希望有更好的方法。 |
|
|
11
1
这个问题说明 没有参考 (实例)它并没有(最初)说不知道Web应用程序类型。 编辑 OP澄清说,是的,它们确实不需要对调用Web程序集中的类型有任何了解,因此答案是适当的。但是,我会认真考虑重构这样一个解决方案,以便将版本传递到另一个程序集中。 对于此方案中的大多数人,如果您知道自定义httpapplication类型:
如果只有动态生成类型:
停止投票给我这个答案:) |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |