Ответ 1
Посмотрите эту ссылку для UrlEncode:
Пространство имен: System.Web
Сборка: System.Web(в System.Web.dll)
Строка Assembly сообщает вам, какую DLL ссылаться.
(Еще один вопрос из моей серии "Ясно, что я единственный идиот" ).
Когда мне нужно использовать класс из .NET Framework, я добросовестно просматриваю документацию, чтобы определить соответствующее пространство имен, а затем добавить директиву "using" в исходный код:
using System.Text.RegularExpressions;
Обычно мне хорошо идти в этот момент, но иногда Intellisense не распознает новый класс, и проект не будет создан. Быстрая проверка в обозревателе объектов подтверждает, что у меня есть правильное пространство имен. Наступает разочарование.
Использование HttpUtility.UrlEncode()
включало добавление соответствующей директивы:
using System.Web;
Но также потребовалось добавить ссылку на .NET Framework Component для System.Web
, то есть щелкнуть правой кнопкой мыши проект в обозревателе решений, выбрать Добавить ссылку и добавить System.Web со вкладки .NET.
Как я могу различить документацию по внедрению .NET пространства имен компонентом .NET Framework, на который нужно ссылаться? Я бы предпочел не охотиться за доступными компонентами каждый раз, когда я использую пространство имен во время отсутствия необходимости в ссылке.
(Для тех, кто любит оставаться после урока и очищает стиратели: "Упорядочить использование" > "Удалить и сортировать" также удалить ссылки на компоненты, которые не используются в другом месте проекта? Как вы очищаете ненужные ссылки?)
Посмотрите эту ссылку для UrlEncode:
Пространство имен: System.Web
Сборка: System.Web(в System.Web.dll)
Строка Assembly сообщает вам, какую DLL ссылаться.
Вы заметите, что в документации (например, http://msdn.microsoft.com/en-us/library/system.web.httputility.aspx) указано имя сборки/библиотеки DLL, в которой должен быть найден класс в, вместе с пространством имен классов.
Пространство имен: System.Web
Сборка: System.Web(в System.Web.dll)
С другой стороны, я знаю, что это может быть немного дорого, но Resharper делает такие вещи намного проще. Если вы серьезный разработчик, вы можете рассмотреть возможность инвестирования в лицензию. Для очистителей-ластиков Resharper добавляет удобный элемент "Найти код, зависящий от модуля", в меню правой кнопки мыши по ссылкам в обозревателе решений. Это не совсем автоматическая очистка, но гораздо проще понять, используется ли что-то еще в вашем проекте.
Документация указывает две вещи для любого типа:
Чтобы взять пример, в котором эти два варианта, рассмотрите документацию для Enumerable
:
Пространство имен: System.Linq
Сборка: System.Core(в System.Core.dll)
Если вы посмотрите на документы MSDN, например
http://msdn.microsoft.com/en-us/library/system.web.httputility.aspx
Он сообщает вам пространство имен и сборку, которая требуется.
Во-первых, исправление вашей терминологии: то, что вы ссылаетесь, называется "сборкой". Сборка содержит классы, принадлежащие пространству имен. Пространство имен может охватывать несколько сборок.
Большинство сборок называются такими же, как и основное пространство имен, которое содержится в них. Например, System.Web
существует в System.Web.dll
. В документации также обычно указывается, какая сборка должна быть указана.
Я думаю, что вы столкнулись с различием между С# и C здесь. Для сравнения: в C все, что вам нужно сделать, чтобы включить новую библиотеку, - это включить ее в заголовок.
Это .net, вам нужно знать 2 вещи:
Чтобы избежать вашей проблемы:
В документах MSDN обратите внимание на сборку, в которой находится класс, и убедитесь, что у вас есть ссылка на сборку.
Если вы просматриваете MSDN для класса, который вы пытаетесь использовать. Обычно он сообщает вам, что класс находится внутри. Например, класс Regex находится в Системе сборки (в System.dll) или в HttpUtility находится в Assembly System.Web(в System.Web.dll).
Я считаю, что такие инструменты, как ReSharper, помогают в этом, а также автоматически ссылаются на необходимые вам сборки.
Я уверен, что вам нужно вручную удалить неиспользуемые ссылки в проектах С#. В проектах VB.NET есть кнопка для отображения неиспользуемых ссылок, когда вы находитесь на странице свойств проекта. Однако я не вижу этого в проектах на С#.