2008-10-10 2 views
25

В моем проекте у меня есть класс, который унаследован многими другими классами. Мы будем называть это ClassBase.Как разрешить неверную «неоднозначную ссылку» от ReSharper на наследование класса?

public class ClassInheritFromBase : ClassBase 

Когда ClassBase это наследуется, ReSharper бросает «Неоднозначное эталонную» предупреждение о ClassBase, и все, что внутри нового класса, унаследованного от ClassBase не IntelliSense и получает предупреждения, что он не может найти его.

Проект компилируется и работает нормально.

Если я изменяю пространство имен, то ClassBase находится в, а затем меняет наследующие классы, они находят это прекрасным, и у ReSharper нет проблем, IntelliSense работает ... пока он не будет скомпилирован. После компиляции он возвращается к наличию двусмысленных эталонных предупреждений и всего остального.

Это было замечено раньше и как оно может быть исправлено? Я видел запись в отслеживании ошибок JetBrains для такой же проблемы, но они закрыли ее как неспособную к воспроизведению.

+0

Можете ли вы создать образец решения, демонстрирующее поведение, которое вы описываете? – 2008-10-11 11:33:50

ответ

2

Это ошибка в ReSharper 4.1 и исправлена ​​в одном из поздних ночных сборок.

Загрузить последнюю ночную сборку по адресу http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds.

+9

Все еще происходит в ReSharper 8.2, поэтому, вероятно, имеет больше общего с другими объяснениями, предложенными ... – 2014-03-28 14:48:12

+3

В ReSharper 8.2 установите значение Копировать локально в False, а затем в True для ссылки на нарушение. В моем случае это System.Web.Http. – 2014-08-17 01:21:58

+0

Все еще происходит .. – 2017-09-28 13:47:24

3

Я видел эту ошибку в ReSharper 4.1. Это происходит, когда базовый класс находится в каталоге App_Code. Я не знаю, как это исправить; это очень раздражает, но код все еще компилируется.

0

Я столкнулся с той же проблемой. Проблема, с которой я столкнулся, была вызвана заказчиком сборки (из библиотеки с открытым исходным кодом, которую я использую, называется PageMethods) и тем фактом, что все мои .aspx-страницы наследуются от класса BasePage, который живет в папке App_Code.

Я не мог получить сборку ReSharper для работы с моим проектом (4.1.933, 4.1.943 (последняя версия) или 4.5). Исправление в последней сборке ReSharper исправляет проблему «Неоднозначный справочник», но ломает поставщика пользовательской сборки.

Единственный способ, которым я мог бы получить как поставщик сборки, так и базовые классы для работы с ReSharper, состоял в том, чтобы поместить базовые классы в отдельную библиотеку классов.

Ниже приведены регистрируемые JIRA ошибки, которые, кажется, относятся к этому вопросу:

0

я испытывал такую ​​же проблему со ссылками на классы C# в AppCode папка.

Я решил это, обновив свой ReSharper до версии 4.5 (начиная с версии 4.1).

Это было очень простое обновление, мне просто нужно было получить последнюю версию с сайта JetBrains (http://www.jetbrains.com/resharper/download/) и запустить его.

Мне не нужно было удалять предыдущую версию (v4.1). Мне не нужно было повторно вводить мой существующий лицензионный ключ.

Все ссылки теперь правильно распознаны, и я могу перейти на классы, как ожидалось.

1

ReSharper -> Options -> General: Нажмите кнопку # Clear Caches #.

+1

Очистка кэша, кажется, стоит делать один раз в секунду, но в этом случае это не помогает. – 2011-11-22 15:51:08

14

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

  1. Сначала я ходил на все мои библиотеки классов и убедился, что все ссылки на другие мои библиотеки классов имели Copy Local свойства установлено значением лжи.
  2. В проекте, где я получил двусмысленное справочное предупреждение, я пошел в мой каталог bin и удалил все файлы .dll и .pdb для всех библиотек, у которых был свой собственный проект.
  3. После новой сборки или в моем случае «ссылка на обновление» на DLL-файлах в VS, ошибки из Resharper исчезли.

Я использую Resharper 5.1 в Visual Studio 2008 только с ссылкой на библиотеки DLL, которые я использую, поэтому я должен был «ссылка обновления»

1

Для меня это был вопрос меня не используя папку решений для кешей. Изменение его из местоположения TEMP в решение решило мою проблему.

0

У меня была такая же проблема с ReSharper 5.1 и решить ее путем перезапуска Visual Studio 2010.

1

Я удалил папку _ReSharper.SolutionName найденный в корне моего решения и перезапущен.

Я с помощью Visual Studio,     2010 с ReSharper 5.1 ... Очистка кэша НЕ помощь (ReSharper -> меню Опции ->Общие -> #Clear Cache #).

5

Я использую VS 2012 и ReSharper 7, и иногда я нашел такое же поведение. Эти шаги, которые работали для меня:

  1. Clean Solution
  2. Закрыть Visual Studio
  3. Перейти в корневую папку вашего решения и найти папку с именем _ReSharper [Имя вашего решения] и удалите его. ,
  4. Вернитесь к Visual Studio, откройте свое решение, и папка будет воссоздана, и после этого не будет больше ошибок «неоднозначной ссылки».
0

Использование VS 2013 Premium & Resharper 8.1, и эта проблема возникала в проекте ASP.Net.

Решение, которое работало для меня:

  1. ли чистое решение.
  2. Открытые ссылки для проекта-нарушителя
  3. На каждую ссылку, относящуюся к другому проекту в решении, установите Copy Local = false.
  4. Попытайтесь переделать решение. Вероятно, вы получите нерешенные контрольные ошибки - это нормально.
  5. Установите каждую ссылку обратно Copy Local = true (где это уместно)
1

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

XXX.YYY.ZZZ.myassembly 
ZZZ.myassembly 

Убедитесь, что у вас нет такого рода вещей в ваших ссылках.