0

我有一个 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 文件中的代码上。如果我在代码隐藏中使用相同的功能,一切都会按预期工作。有人可以解释一下吗?

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

4

2 回答 2

1

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

于 2010-10-11T15:10:23.743 回答
0

看起来你在你的应用程序中故意复活“DLL Hell”时遇到了很多麻烦,而默认情况下,.NET 可以很容易地避免它。为什么在同一个应用程序中引用同一个程序集的两个版本?

您需要删除其中一个引用(很可能,它必须是已删除的未签名引用),然后使用其中的代码。或者更改另一个,使其代码不同。

于 2010-10-11T15:14:10.320 回答