.Net 4.0 System.Web.Security.MembershipProvider неоднозначная ссылка?

Недавно я обновил мою установку BlogEngine.Net до 1.6 и .Net 4.0, однако я не создал BlogEngine.Core, когда я выполнил обновление. Однако, когда я пытаюсь создать проект BlogEngine.Core, компиляция завершится неудачей, потому что она не может загрузить символы для (System.Web.Security.) MembershipProvider. Я считаю, что это проблема .Net/С#/user, а не проблема BlogEngine.

В проекте есть ссылка на библиотеку System.Web и файл класса (который наследуется от MembershipProvider) включает в себя использование для System.Web.Security. С включенным ReSharper IntelliSense указывает на путаницу в отношении того, какой членский провайдер должен использовать, предоставляя выбор из двух библиотек с тем же именем (System.Web.Security).

Что могло бы вызвать эту двусмысленную ссылку? Как определить, на какие две библиотеки ссылаются? Ничто не указывает на дублирующую ссылку. Опять же, очевидное действительно очевидно, как только вы его видите.

Ответы

Ответ 1

Проблема решена. System.Web.Security namespace является членом System.Web, однако он также является членом System.Web.ApplicationServices. Проект имел ссылку на System.Web и оператор using, ссылающийся на System.Web.Security, поэтому IntelliSense не выдавал флаг при указании класса. Однако в проекте отсутствовала ссылка на System.Web.ApplicationServices. Проект имел ссылку на класс, но он не мог загрузить класс, потому что отсутствовала содержащая сборка (... ApplicationServices).

Ответ 2

Я только что рассмотрел эту же проблему при создании пользовательского поставщика членства для своего веб-приложения. Вам нужно удалить ссылку на System.Web и добавить следующие ссылки. - System.Web.ApplicationServices - System.Configuration