代码之家  ›  专栏  ›  技术社区  ›  Peter

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

  •  0
  • Peter  · 技术社区  · 14 年前

    我有一个ASP.NET Web应用程序,它引用了“c:\references\utils.varia.dll”。引用的另一个dll使用了此dll的签名版本(“c:\references\utils.varia.signed.dll”)。

    现在,在我的ASPX中,我有以下导入指令: <%@import namespace=“utils.varia”%>

    此页使用utils.varia.StringExtensionsExtensionClass中的字符串扩展名。

    但在运行时,我得到以下错误:

    编译错误

    描述:在 所需资源的编译 服务于此请求。请复查 以下特定错误详细信息 修改源代码 适当地。

    编译器错误消息:CS0121: 调用之间不明确 以下方法或属性: 'concentra.utils.StringExtensions.TosShortReadableString(字符串, int’和 'concentra.utils.StringExtensions.TosShortReadableString(字符串, INT)

    所以我的猜测是编译器不知道是从有符号的dll还是常规的dll中获取扩展方法。

    这个假设正确吗?如果正确,如何将其指向正确的DLL?

    [编辑]
    奇怪的是,这个编译器错误只发生在ASPX文件中的代码上。如果我在codebehind中使用相同的函数,那么一切都将按预期工作。有人能解释一下吗?

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

    2 回复  |  直到 14 年前
        1
  •  0
  •   Andrew Barber Tejas Tank    14 年前

        2
  •  1
  •   Seth Reno    14 年前