项目引用属性 - 版本号(Project reference properties - Versio

2019-10-18 05:06发布

我有一个参考,我还创建了一个组件的Visual Studio项目。 下面是该项目我的组件参照属性的屏幕截图。 当我更新我的程序集的版本1.1.0.0 ,我的项目失败,我想这个属性是问题。

由于Version属性说1.0.0.0 ,这是否意味着它总是会找我的组件有一个版本的1.0.0.0 ? 并增加我的版本1.1.0.0会导致我的项目看不出大会呢?

Answer 1:

你有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>


文章来源: Project reference properties - Version number