.NET程序集名称是否应包含版本号?

jav*_*vaj 10 .net naming

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

cse*_*ton 12

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

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

[assembly: AssemblyVersion("1.1.0.256"]
[assembly: AssemblyFileVersion("1.1.0.256")]
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ant*_*ean 8

微软的Krzysztof CwalinaBrad Abrams框架设计指南建议组装命名

<Company>.<Component>.dll
Run Code Online (Sandbox Code Playgroud)

我进一步支持这个(不使用版本#),因为GAC和dll文件属性将显示版本.


Fad*_*oof 5

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

我想说,如果您有一些公共库,它们是可重用模块的依赖项,并且可以存在于多个版本 1.0、1.1、1.2 等中,那么可以在名称中包含版本号以避免冲突,这将是一个有效的论点。鉴于公共库不在 GAC 中。