Какая DLL будет использоваться компилятором aspx, если на DLL есть ссылка, но в папке bin существует несколько версий
У меня есть веб-приложение ASP.NET, которое имеет ссылку на "C:\reference \Utils.Varia.dll". Существует другая ссылочная библиотека DLL, которая использует подписанную версию этой библиотеки DLL ('C:\reference \Utils.Varia.Signed.dll').
Теперь в моем aspx у меня есть следующая директива import:<% @ Import Namespace = "Utils.Varia"%>
На этой странице используется расширение строки из класса расширения Utils.Varia.StringExtensions.
Но во время выполнения я получаю следующую ошибку:
Ошибка компиляции
Описание: во время компиляции ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените свой исходный код соответствующим образом.
Сообщение об ошибке компилятора: CS0121: вызов неоднозначен между следующими методами или свойствами: 'CONCENTRA.UTILS.StringExtensions.ToShortReadableString(string, int)' и 'CONCENTRA.UTILS.StringExtensions.ToShortReadableString (string, int)'
Поэтому я предполагаю, что компилятор не знает, брать ли метод расширения из подписанной или обычной библиотеки DLL.
Является ли это предположение правильным, и если да, то как мне указать правильную DLL?
[Редактировать]
Странно то, что эта ошибка компилятора возникает только в коде внутри файла aspx. Если я использую ту же функцию в коде позади, все работает как положено. Может кто-нибудь объяснить это, пожалуйста?
Кроме того, я не могу просто ссылаться на подписанную версию, потому что на самом деле использование подписанной версии является исключением, все другие компоненты используют без знака (кроме 1, очевидно).
2 ответа
Похоже, что вы приложили много усилий, чтобы целенаправленно воскресить "DLL Hell" в своем приложении, когда по умолчанию.NET позволяет легко избежать этого. Почему у вас есть две версии одной и той же сборки, на которые есть ссылки в одном приложении?
Вам нужно удалить одну из этих ссылок (скорее всего, это должна быть удаленная неподписанная) и просто использовать код из этого. Или измените другой, чтобы его код был другим.