簡體   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