我们目前对于实际的.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系统将根据版本属性更新二进制文件.
微软的Krzysztof Cwalina和Brad Abrams的框架设计指南建议组装命名
<Company>.<Component>.dll
Run Code Online (Sandbox Code Playgroud)
我进一步支持这个(不使用版本#),因为GAC和dll文件属性将显示版本.
我知道 DevExpress网站使用版本指示符作为其程序集名称的一部分,例如 XtraEditors8.2.dll。我想原因是您希望能够在同一目录中拥有多个版本的程序集。例如,我们有大约 15 个智能客户端,它们作为同一 shell/客户端的一部分进行分发。每个智能客户端可以有不同版本的 DevExpress 控件,因此我们需要能够将 XtraEditors7.1.dll 和 XtraEditors8.2 存在于同一目录中。
我想说,如果您有一些公共库,它们是可重用模块的依赖项,并且可以存在于多个版本 1.0、1.1、1.2 等中,那么可以在名称中包含版本号以避免冲突,这将是一个有效的论点。鉴于公共库不在 GAC 中。