我们目前对于实际的.NET程序集名称是否应包含代码的版本号(例如CodeName02.exe或CompanyName.CodeName02.dll)存在激烈的内部争论。有没有人知道像Microsoft这样的权威来源提供有关此问题的指导?

有帮助吗?

解决方案

这是Properties / AssemblyInfo.cs文件的用途。

该文件中有两个版本,即文件版本和程序集版本:

[assembly: AssemblyVersion("1.1.0.256"]
[assembly: AssemblyFileVersion("1.1.0.256")]

设置完成后,您可以使用它们来跟踪二进制文件的版本。在资源管理器中可以通过右键单击 - <!> gt;属性轻松查看。

Microsoft的应用程序(和操作系统)中包含的dll或exe名称都不使用该约定。

其他系统将使用这些数字来解析依赖关系并验证版本。例如,MSI系统将根据版本属性更新二进制文件。

其他提示

通过框架设计指南 .msdn.com / kcwalina /“rel =”noreferrer“> Krzysztof Cwalina 和 Brad Abrams Microsoft建议将程序集命名为

<Company>.<Component>.dll

我进一步支持此功能(不使用版本号),因为GAC和dll文件属性将显示版本。

我不知道任何权威,但在我看来,使用一致的名称可以简化从安装脚本到文档的所有过程。鉴于可以将版本存储为文件中的元数据,我不知道为什么文件名中需要它。为什么要为自己必须考虑不同命名的文件而烦恼呢?

只需查看.NET框架或任何其他微软产品即可。将版本号作为程序集名称的一部分听起来是个坏主意。

在程序集的元数据部分中有这个(和其他信息)的位置。 (AssemblyInfo.cs中)

可以在Windows资源管理器中查看此信息(属性对话框,状态栏,工具提示 - 它们都显示此信息)。

我知道DevExpress 网站使用版本指示符作为其程序集名称的一部分,例如XtraEditors8.2.dll。我想原因是你希望能够将多个版本的程序集放在同一目录中。例如,我们有大约15个智能客户端作为同一个shell /客户端的一部分进行分发。每个smartclient都可以使用不同版本的DevExpress控件,因此我们需要能够将XtraEditors7.1.dll和XtraEditors8.2存在于同一目录中。

我想说如果你有可重用模块的依赖关系的公共库,并且可以存在多个版本1.0,1.1,1.2等,那么版本号可以包含在名称中以避免冲突是一个有效的参数。 。鉴于共同的库不是生活在GAC中。

我认为将版本号放在DLL的文件名中的主要想法来自 DLL Hell ,其中有多个版本的DLL,所有版本都有相同的名称引起问题(即您拥有哪个DLL的实际版本,并且它具有所需的功能等。)

与更传统的C / C ++ DLL文件相比,.NET Framework处理完全不同的依赖关系,GAC中可能有多个版本的库,主要是因为GAC是链接的“假”文件夹到文件系统上的其他文件,除了能够将程序集包含在可执行文件安装中(相同的文件夹部署等)。

版本信息可以包含在assemblyInfo文件中,然后可以通过反射等查询。

一些供应商在名称中包含版本号,以便更容易一目了然地看到它是什么。 Microsoft dll名称不包含框架目录中的版本号。

既然版本可以设置为属性,这不是半冗余吗?

我还会继续建议MS没有标准,快速查看他们的DLL名称:user32.dll,tcpmon.dll,winsock.dll等。

Microsoft使用32的后缀来表示32位DLL版本,以便这些DLL可以与现有的16位DLL文件共存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top