繁体   English   中英

当一个dll被引用但bin文件夹中存在多个版本时,aspx编译器将使用哪个dll

[英]Which dll will aspx compiler use when a dll is referenced one but multiple versions exist in bin folder

我有一个ASP.NET Web应用程序,该应用程序具有对“ C:\\ references \\ Utils.Varia.dll”的引用。 引用了另一个dll,它使用该DLL的签名版本(“ C:\\ references \\ Utils.Varia.Signed.dll”)。

现在,在我的aspx中,我具有以下导入指令:<%@ Import Namespace =“ Utils.Varia”%>

此页面使用Utils.Varia.StringExtensions扩展类的字符串扩展名。

但是在运行时,出现以下错误:

编译错误

说明:编译服务于此请求所需的资源期间发生错误。 请查看以下特定的错误详细信息,并适当地修改您的源代码。

编译器错误消息:CS0121:下列方法或属性之间的调用不明确:'CONCENTRA.UTILS.StringExtensions.ToShortReadableString(string,int)'和'CONCENTRA.UTILS.StringExtensions.ToShortReadableString(string,int)'

因此,我的猜测是编译器不知道是从带符号的dll还是从常规的dll采用扩展方法。

此假设是否正确?如果正确,我如何将其指向正确的dll?

[编辑]
奇怪的是,此编译器错误仅发生在aspx文件中的代码上。 如果我在后面的代码中使用相同的功能,那么一切都会按预期进行。 有人可以解释一下吗?

另外,我不能只引用签名版本,因为实际上使用签名版本是个例外,所有其他组件都使用unsigned(显然是1除外)。

更改Web应用程序以引用已签名的版本。

在默认情况下,.NET可以轻松地避免使用它,因此有意在应用中重新创建“ DLL Hell”时,您会遇到很多麻烦。 为什么在同一应用程序中引用了同一程序集的两个版本?

您需要删除这些引用之一(最有可能的是,它必须是被删除的未签名的引用),然后仅使用其中的代码即可。 或更改另一个,使其代码不同。

暂无
暂无

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

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