装配参考版本号令人困惑。最快的版本是3.2.3.0,所以为什么所有参考文献都说3.0.0.0?

时间:2015-07-26 19:39:19

标签: asp.net .net razor asp.net-mvc-5 assembly-resolution

VS项目装配参考不一致

我通过NuGet安装了System.Web.WebPages.Razor.dll版本 3.2.3.0 。当我在VisualStudio项目资源管理器中打开引用并查看该引用的属性窗口时,它会显示版本 3.0.0.0 。同样,尽管安装了 3.2.3.0 版本,但System.Web.WebPages.dll仍显示版本 3.0.0.0 。如果我打开* .csproj文件,引用为<Reference Include="System.Web.WebPages, Version=3.0.0.0,但它有一个子节点,上面写着:<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll</HintPath>

所以,首先,为什么它似乎在任何地方被引用为版本3.0.0.0,而NuGet包声称它是3.2.3.0并且引用有一个指向该特定程序集的提示路径。 Microsoft是否发布了相同程序集的不同颠倒...所有版本号都相同(3.0.0.0)?

我想也许它与“特定版本”选项设置为false有关,但后来我看到其他引用的DLL,如System.Web.Mvc显示版本5.2.3.0,尽管还有“特定”版本“设置为false。为什么会出现这种差异?

web.config程序集参考不一致

与此同时,在web.config文件中,system.web.webPages.razor部分引用host程序集中pagesSystem.Web.WebPages.Razor个元素类型,版本 3.0.0.0 < / em>,甚至认为NuGet包说它的版本是 3.2.3.0

与* .csproj文件中的hintpath类似,web.config文件在configuration/runtime/assemblyBinding/dependentAssembly下有一个System.Web.WebPages条目,其中包含子元素<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.2.3.0" />

在任何情况下,似乎System.Web.WebPages.dllSystem.Web.WebPages.Razor.dll(但不是System.Web.Mvc.dll?)的每次更新都保持相同的版本号(3.0.0.0),但随后使用了hintpaths和绑定重定向以定位特定的subversion。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

我认为重点是一些引用(十几个NuGet包)需要3.1.X.X版,而其他使用3.2.X.X,另一个使用3.0.X.X等。它们几乎从未使用完全相同的版本引用。暴露的代码库(签名)不会发布更改,只有一些错误修复。

通过使用绑定重定向,不需要在任何地方设置(非常)特定版本的程序集版本。使用最新版本(在程序集绑定重定向中newversion中设置的版本)。全部完成。运行!