Какая 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 позволяет легко избежать этого. Почему у вас есть две версии одной и той же сборки, на которые есть ссылки в одном приложении?

Вам нужно удалить одну из этих ссылок (скорее всего, это должна быть удаленная неподписанная) и просто использовать код из этого. Или измените другой, чтобы его код был другим.

Измените веб-приложение на ссылку на подписанную версию.

Другие вопросы по тегам