C# 程序集名称和版本
对于程序集和发布,什么是最佳实践 我希望能够引用同一库的多个版本-解决方案包含多个项目,这些项目依赖于我们自己构建的commonutils.dll库的不同版本 由于所有依赖项都复制到bin/debug或bin/release,因此尽管每个dll文件具有不同的程序集版本号,但其中只能存在commonutils.dll的一个副本C# 程序集名称和版本,c#,assemblies,naming-conventions,C#,Assemblies,Naming Conventions,对于程序集和发布,什么是最佳实践 我希望能够引用同一库的多个版本-解决方案包含多个项目,这些项目依赖于我们自己构建的commonutils.dll库的不同版本 由于所有依赖项都复制到bin/debug或bin/release,因此尽管每个dll文件具有不同的程序集版本号,但其中只能存在commonutils.dll的一个副本 我应该在程序集名称中包含版本号,以便能够引用库的多个版本,还是有其他方法?程序集可以在GAC(全局程序集缓存)中共存,即使它们具有相同的名称,因为版本不同。这就是.NET
我应该在程序集名称中包含版本号,以便能够引用库的多个版本,还是有其他方法?程序集可以在GAC(全局程序集缓存)中共存,即使它们具有相同的名称,因为版本不同。这就是.NET Framework附带的程序集的工作方式。为了使组件能够进行GAC注册,必须满足的要求将被签署
将版本号添加到程序集的名称中只会破坏程序集生态系统的整体用途,而且是很麻烦的。要知道给定程序集的哪个版本,我只需打开“属性”窗口并检查版本。为不同的程序集版本指定不同的名称是最简单的方法,而且肯定有效 如果程序集(commonutils.dll)具有强名称(即签名),则可以考虑在GAC中安装它(全局程序集缓存-可以在GAC中并排安装同一程序集的不同版本),因此,调用应用程序会自动从中获取正确的版本,因为.NET类型包含程序集版本信息
在VS项目中,您引用了库的正确版本,但未将其部署在应用程序文件夹中;您可以在GAC中安装它(在应用程序安装期间)。这是我一直以来的生活-- 这取决于您计划使用DLL文件的目的。我将其分为两大类:
一旦您到达运行时,您就可以开始组装。将您想要的任何东西加载到。然后,您可以使用Assembly.GetType来达到所需的类型。如果在多个加载的程序集中(例如在同一项目的多个版本中)存在类型,则可能会出现异常。为了解决这个问题,您需要从程序集变量的实例中获取类型,而不是从静态assembly.GetType方法中获取类型。有时您对程序集生态系统没有选择余地。我同意你的看法,只使用每个程序集的最新版本会很好,但这可能不是一个立即的选择。