【发布时间】:2020-10-26 13:19:25
【问题描述】:
我们正在使用 Telerik kendo 库,它允许我们在 ASP.NET MVC 项目中使用高级 UI 小部件。上周有人鼓励我升级库,但我们认为我们可以将同一个库链接两次,尝试在某些视图中升级库并同时进行迁移。
但是我的尝试失败了。
我在 csproj 中注册了两个版本的 Telerik kendo 库,其程序集和库名称为 Kendo.Mvc,为此我重命名了这两个库,并使用以下代码块在项目中引用。此外,我使用“外部别名”创建别名来引用每个库版本:
<Reference Include="Kendo.Mvc.2020, Version=2020.3.1021.545, Culture=neutral, PublicKeyToken=121FAE78165BA3D4">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\vendor\Kendo.Mvc.2020.dll</HintPath>
<Aliases>Kendo_2020</Aliases>
<Private>True</Private>
</Reference>
<Reference Include="Kendo.Mvc.2016, Version=2016.3.1118.545, Culture=neutral, PublicKeyToken=29AC1A93EC063D92">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\vendor\Kendo.Mvc.2016.dll</HintPath>
<Aliases>Kendo_2016</Aliases>
<Private>True</Private>
</Reference>
之后我更改了 web.config 中的代码库以显示适当的库版本:
<dependentAssembly>
<assemblyIdentity name="Kendo.Mvc" publicKeyToken="29AC1A93EC063D92" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2016.3.1118.545" newVersion="2016.3.1118.545" />
<codeBase version="2016.3.1118.545" href="Kendo.Mvc.2016.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Kendo.Mvc" publicKeyToken="121FAE78165BA3D4" culture="neutral" />
<bindingRedirect oldVersion="2016.3.1118.546-2020.3.1021.545" newVersion="2020.3.1021.545" />
<codeBase version="2020.3.1021.545" href="Kendo.Mvc.2020.dll"/>
</dependentAssembly>
然后我尝试使用外部链接使用库的每个版本,如下所示:
extern alias Kendo_2016;
using Kendo_2016.Kendo.Mvc.Extensions;
using Kendo_2016.Kendo.Mvc.UI;
...
bin 文件夹有两个库:
但是当我启动项目时,它显示一个错误,表明无法找到库:
如果库在正确的位置,为什么它无法加载?
谢谢!
【问题讨论】:
-
我会和 Telerik 核实一下,看看你是否能做到这一点。 “只有一个库版本”可能是“设计使然”。
-
好的,谢谢,我去问问 Telerik 的工作人员!
-
请注意,错误消息并不是说找不到库,而是说 NAME 不匹配,倒数第二行
-
你好@camilo-terevinto,你是对的,也许这个“名称”属性来自签名证书,它试图将文件名与这个属性匹配。我问 Telerik,还在等待答案......我会在这里发布任何消息
-
最后是binary的StrongName问题,用reflectil去掉后问题就解决了。
标签: c# asp.net asp.net-mvc kendo-asp.net-mvc