对于实际的.NET程序集名称是否应包含代码的版本号(例如CodeName02.exe或CompanyName.CodeName02.dll),我们目前对内部存在争议。有没有人知道像微软这样的权威来源提供有关这个问题的指导?.NET程序集名称是否应包含版本号?
回答
这是Properties/AssemblyInfo.cs文件的用途是什么。
有该文件,该文件版本和程序集版本中的两个版本:
[assembly: AssemblyVersion("1.1.0.256"]
[assembly: AssemblyFileVersion("1.1.0.256")]
一旦这些设置,你可以用它们来追踪你的二进制文件的版本。在浏览器中右键单击 - >属性即可轻松查看。
Microsoft的应用程序(和操作系统)中包含的任何dll或exe名称都不使用该约定。
其他系统将使用这些数字来解决依赖关系并验证版本。例如,MSI系统将根据版本属性更新二进制文件。
我没有意识到任何权威性,但在我看来,使用一致的名称将简化从安装脚本到文档的所有过程。考虑到可以将版本作为元数据存储在文件上,我不知道为什么需要文件名。为什么要为解决不同名称文件造成的麻烦而烦恼?
版本信息可以包含在程序集信息文件,然后可以通过反射等进行查询
有些厂商在名称中包含的版本号,以使其更容易一眼就看什么。 Microsoft dll名称不包含框架目录中的版本号。
只是看看.NET框架或任何其他微软产品的事情。将版本号作为程序集名称的一部分听起来像是一个糟糕的主意。
在程序集的元数据部分有这个(和其他信息)的地方。 (AssemblyInfo.cs)
可以在Windows资源管理器(属性对话框,状态栏,工具提示 - 它们都显示此信息)中查看此信息。
由于版本可以设置为属性不是这个半冗余?
我还会去的肢体,并建议MS没有一个标准给予快速浏览一下他们的DLL名称:user32.dll中,tcpmon.dll,WINSOCK.DLL等
这些不是.NET组件 - 它们是本机win32并受“DLL地狱”影响。在.NET中,gac用于提供版本控制并允许后续的DLL具有相同的物理名称。 – x0n 2008-11-24 15:50:17
我不确定引用20年的软件考古学是非常相关的!那个时代的名字必须是8.3,这往往是主流辩论。 – 2008-11-24 15:51:35
Framework Design Guidelines通过Krzysztof Cwalina和微软的Brad Abrams建议装配的命名一样
<Company>.<Component>.dll
我进一步支持这种(不使用版本号),因为GAC和dll文件的属性将显示版本。
我觉得把一个DLL的文件名的版本号的主要思想是从DLL地狱带过来的,具有DLL的多个版本,其中,所有具有相同名称引起的问题(的即其实际版本你有一个DLL,它是否具有所需的功能等)。
与更传统的C/C++ DLL文件相比,.NET Framework处理完全不同的依赖关系,可能在GAC中有多个版本的库,主要是因为GAC是一个“假”文件夹,链接到文件系统上的其他文件,除了能够将程序集包含在可执行文件安装(相同的文件夹部署等)之外。
我知道DevExpress website使用版本指标作为其组件名称的一部分,如XtraEditors8.2.dll。我想原因是你想能够有位于同一目录中的程序集的多个版本。例如,我们有大约15个作为同一个shell /客户端的一部分分发的smartclient。每个smartclient可以有不同版本的DevExpress控件,因此我们需要能够在同一个目录中存在XtraEditors7.1.dll和XtraEditors8.2。
我会说,如果你有可重用模块的依赖关系的公用库,并且可以存在多个版本1.0,1.1,1.2等,那么这将是一个有效的参数,版本号可以包含在名称中以避免碰撞。鉴于共同的库存不在GAC中。
Microsoft使用后缀32来表示32位DLL版本,以便这些DLL可以与现有的16位DLL文件共存。
- 1. .NET程序集名称包含点
- 2. 可执行文件的名称中是否包含版本号?
- 3. 新版本的.NET发布时,程序集强名称是否会更改?
- 4. 在启动应用程序时,Microsoft是否包含自动.NET版本检查?
- 5. 版本号是否附加到应用商店应用名称?
- 6. .NET程序集版本
- 7. .NET版本号(安装程序版本)
- 8. 编译.NET程序集时,名称中包含x__的类是什么?
- 9. .NET发行版中是否包含adodb.dll?
- 10. 将应用程序版本名称附加到应用程序名称
- 11. 如何在包含lib的文件名中包含版本号?
- 12. .NET自动包含程序集
- 13. .NET:是否有内置版本的PropertyChangedEventArgs包含旧/新值?
- 14. .NET框架4是否包含版本3?
- 15. 应用程序池版本4是否支持.net Framework 4.5.1?
- 16. 是否所有版本的Windows 7都包含.NET Framework 3.5版本?
- 17. jQuery事件名称空间是否可以包含破折号?
- 18. HTML输入名称是否可以包含空格,逗号等?
- 19. Firebase条目是否可以在名称中包含逗号?
- 20. .Net Framework 4.0安装程序是否包含.Net Framework 3.5?
- 21. .net framework 3.0引导程序是否包含.net framework 2.0?
- 22. .NET 3.5安装程序中是否包含.NET 2.0?
- 23. 如何使用程序集版本重命名构建名称?
- 24. 使用版本化的.Net程序集
- 25. 如何强制工作流程包含本地类型程序集名称?
- 26. LocalBroadcastManager是否依赖应用程序包名称?
- 27. 让TeamCity将Subversion版本号集成到程序集版本
- 28. Owin.Security.Providers.OpenID是否有强名称版本
- 29. 程序集AjaxControlToolkit不包含名称为'jquery'的Web资源
- 30. 编译程序集不包含名称空间
每次构建后如何自动增加构建编号?或者我必须手动打开这个文件并每次更改maj,min,内部版本号? – 2008-11-21 21:39:04
使用*而不是数字,构建将自动增加数值。 1.1。* – 2008-11-21 21:57:30