我通过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文件中,system.web.webPages.razor
部分引用host
程序集中pages
和System.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.dll
和System.Web.WebPages.Razor.dll
(但不是System.Web.Mvc.dll
?)的每次更新都保持相同的版本号(3.0.0.0),但随后使用了hintpaths和绑定重定向以定位特定的subversion。这是怎么回事?
答案 0 :(得分:1)
我认为重点是一些引用(十几个NuGet包)需要3.1.X.X版,而其他使用3.2.X.X,另一个使用3.0.X.X等。它们几乎从未使用完全相同的版本引用。暴露的代码库(签名)不会发布更改,只有一些错误修复。
通过使用绑定重定向,不需要在任何地方设置(非常)特定版本的程序集版本。使用最新版本(在程序集绑定重定向中newversion
中设置的版本)。全部完成。运行!