Сохраняющаяся зависимость сборки в C # .NET - PullRequest
8 голосов
/ 12 августа 2008

Мой проект на C # - назовем его SuperUI - используется для использования класса из внешней сборки. Сейчас это не так, но компилятор не позволит мне собрать проект без ссылки на сборку. Позвольте мне уточнить.

Этот проект использовался для создания и перехвата пользовательского класса исключений - SuperException - который был получен из стандартного System.Exception и находился в отдельной предварительно скомпилированной сборке SuperAssembly.DLL, на которую я ссылался.

В конце концов я решил, что это бессмысленное упражнение, и заменил все SuperExceptions на исключение System.SuitableStandardException в каждом случае. Я удалил ссылку на SuperException.DLL, но теперь при попытке скомпилировать проект встречаю следующее:

Тип 'SuperException' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку 'SuperException, Version = 1.1.0.0 (...)'

Исходный файл, на который ссылается ошибка, не имеет значения; это пространство имен проекта, которое выделяется в IDE.

Теперь вот что:

  1. Все случаи использования SuperException были исключены из кода проекта.
  2. По сравнению с другим проектом, который прекрасно компилируется без ссылки на SuperException.DLL, я ссылаюсь только на еще одну сборку - и that не ссылается ни на что, на что мой проект не ссылается сам. Хотя возможно, что любая из этих зависимостей может выдать SuperExceptions, я только ловлю базовый класс Exception и в любом случае ... другой проект работает нормально!
  3. Я делал «Чистое решение» для Visual Studio и много раз очищал все вручную.

Это не конец света, чтобы включить эту ссылку, я просто не понимаю, почему это необходимо больше. Nrrrgg. Любые указатели приветствуются!

Ответы [ 14 ]

0 голосов
/ 13 августа 2008

Если вы ссылаетесь на любые типы, которые наследуются от SuperException (даже если тип определен в другой сборке), вам нужна ссылка на сборку, в которой определено SuperException.

Принято на это.

Возможно, вы не ссылаетесь на SuperException, но вы можете ссылаться на SpecializedSuperException, который получен из или каким-то иным образом использует SuperException - ваш grep проекта для SuperException не будет его ловить, хотя .

Попробуй взломать пробную версию NDepend

0 голосов
/ 13 августа 2008

grep папка вашего проекта. Это может быть скрытая ссылка в вашем проекте или проект, на который ссылается ваш проект. При необходимости очистите с помощью блокнота.

0 голосов
/ 12 августа 2008

Попробуйте создать новый проект и добавить в него все свои классы.

0 голосов
/ 12 августа 2008

Звучит довольно странно. Вот что я бы проверил дальше:

  1. Убедитесь, что в вашем файле Properties / AssemblyInfo.cs ничего не осталось.
  2. Убедитесь, что в файле SuperUI.csproj ничего не осталось.
  3. Удалить все ссылки и повторно добавить их.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...