При отладке ошибки “Тип 'xx' определяется в блоке, на который не ссылаются”

Вот метод, который я использовал в прошлом с хорошим успехом:

соединительная линия / - новейший. Следующая главная версия кода. Май или не может работать в любой момент времени.

/branches/1.0, 1.1, и т.д. Стабильные ответвления обслуживания кода. Используемый для исправления ошибок стабилизируйте новые выпуски. Если ответвление обслуживания, это должно скомпилировать (если применимо) и готово к QA/поставке в любой момент времени. Если ответвление стабилизации, это должно скомпилировать и является завершенной функцией. Никакие новые возможности не должны быть добавлены, никакой рефакторинг и никакие очистки кода. Можно добавить пред - префикс для указания на ответвления стабилизации по сравнению с ответвлениями обслуживания.

/branches/cool_feature. Используемый для очень экспериментальной или разрушительной работы, которая может или не может превратить его в соединительную линию (или ответвление обслуживания). Никакие гарантии о компиляции кода, работе или иначе поведении нормально. Должен продлиться минимальное время как возможное прежде, чем объединиться в ответвление магистрали.

/tags/1.0.1, 1.0.2, 1.1.3a, и т.д. Используемый для меток упакованного & поставленный выпуск. Никогда изменения. Сделайте столько тегов, сколько Вы хотите, но они неизменны.

21
задан Abel 2 February 2010 в 10:32
поделиться

2 ответа

Я подозреваю, что в вашем коде нет ни одной строки, которая вызывает это, поскольку вы говорите, что не не используют типы System.Windows.Forms, и ошибка компилятора не указывает на (полезную) строку вашего кода.

Я думаю, что происходит то, что вы ссылаетесь на библиотеку, имеющую общедоступную -visible метод или свойство, которое либо возвращает System.Windows.Forms.Control, либо принимает его в качестве параметра. Это не Не имеет значения, действительно ли вы вызываете этот метод / свойство, тот факт, что он общедоступен, означает, что ваш собственный код должен иметь возможность разрешать все типы, которые использует библиотека. Если бы библиотека использовала только System.Windows.Forms для внутреннего использования , вы бы этого не испытали.

Это также означает, что просто просмотр зависимостей сборок, от которых вы зависите, может просто сузить круг список подозреваемых, поскольку могут быть некоторые сборки, которые зависят от System.Windows.Forms внутри (без проблем), и одна вызывающая проблемы сборка, которая имеет общедоступный параметр / возвращаемое значение типа из сборки SWForms.

Мое предложение: вы просто настраиваете пустой проект без ссылки на SWForms, затем добавляете каждую из своих зависимостей по очереди и пытаетесь скомпилировать после каждой.

30
ответ дан 29 November 2019 в 20:59
поделиться

Используйте что-то вроде NDepend или Reflector или Object Browser, чтобы проверить зависимости сборок, от которых вы зависите.

Я не могу придумать другого способа, учитывая информацию выше.

2
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: