繁体   English   中英

项目参考属性-版本号

[英]Project reference properties - Version number

我有一个Visual Studio项目,该项目引用一个我也创建的程序集。 下面是该项目中我的装配引用的属性的屏幕截图。 当我将程序集版本更新为1.1.0.0 ,我的项目失败,并且我认为此属性是问题。

由于Version属性表示1.0.0.0 ,这是否意味着它将始终寻找版本为1.0.0.0 而将我的版本增加到1.1.0.0会导致我的项目根本看不到程序集吗?

版本:1.0.0.0

您有2个版本的强命名程序集。 根据设计行为,针对其他版本的程序集进行编译的其他项目无法加载具有不同版本的程序集。 原因是版本更改表示API更改。 否则,它将使用相同版本进行就地更新-因此,较旧的代码可能无法与较新的DLL一起正常运行。

选项:

  • 如果没有API更改-请勿更改程序集的版本。 这意味着您可以弃用方法,但不能添加/删除方法/类或更改行为。
  • 如果您根据该程序集控制所有项目,请使用新的参考重新生成所有项目,并停止支持旧版本(如果可能)。
  • 在设置中提供发布者政策 ,以将旧版本的请求重定向到新版本。 假设您的新版本确实与旧版本向后兼容。
  • 在GAC中安装所有版本,或者通过在每个可执行文件旁边放置正确的版本来确保应用程序获得正确的程序集版本。 当您不控制程序集的所有用户并且API有重大更改时,这几乎是唯一的方法。

旁注:根据所讨论的程序集是用于内部(使用该程序集控制所有项目)还是用于外部消耗,您可能需要做更多的工作来确保向后兼容和适当的弃用策略。

发布者政策示例:摘自上面链接的文章:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="myAssembly"
                           publicKeyToken="32ab4ba45e0a69a1"
                           culture="en-us" />
         <!-- Redirecting to version 2.0.0.0 of the assembly. -->
         <bindingRedirect oldVersion="1.0.0.0"
                          newVersion="2.0.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM