Добавление файлов в проекты Visual Studio — веб-журнал Рика Страла

Добавление файлов в проекты Visual Studio — веб-журнал Рика Страла
На чтение
61 мин.
Просмотров
21
Дата обновления
11.11.2024
На этой странице:

Когда я думаю о вещах, которые меня больше всего раздражают в среде IDE Visual Studio диалоговое окно Project New Item … и то, как оно работает, должно занимать первое место в списке.

Добавление новых файлов в проект — обычное дело задача, и, честно говоря, я думаю, что большая часть критики в адрес Visual Studio со стороны разработчиков, не использующих Visual Studio, которые впервые используют Visual Studio, можно проследить до запутанного способа добавления файлов в проект.

Итак, вот — это несколько неприятностей и несколько советов, как сделать добавление новых элементов в проект более терпимым.

Новый элемент или новый файл?

Используете ли вы Новый файл или Новый элемент ? И почему эти варианты похоронены? В меню «Файл» отображается только Новый файл , который является очевидным местом для поиска, но, скорее всего, неправильным выбором, если вам действительно нужен диалог Новый элемент .

По умолчанию диалоговое окно Новый файл … , которое вы хотите использовать большую часть времени, не отображается на Ctrl-N, как вы ожидали — нет , этот очевидный ярлык переходит в диалоговое окно New File , которое создает новый файл, который не добавляется в проект. Полезно в некоторых случаях, но обычно не применимо, когда вы работаете над проектом.

Функция «Новый элемент», вероятно, является наиболее часто используемым действием контекстного меню, которое вы используете на уровне проекта, но «Новый элемент» эта опция скрыта во вторичном меню:

Добавить … скрыт в середине контекстного меню, где его трудно увидеть (потому что текст короткий), а затем параметр Новый элемент … Вариант на один уровень ниже. Если вы наведете туда мышку — это боль.

Мне кажется, что опция New Item … должна быть в самом начале вверху первого контекстного меню — не вложено — поэтому вам не нужно за ним охотиться. Добавить … все еще может быть там для всех других опций, но этот Новый элемент заслуживает более заметного расположения.

Вы также можете найти Новый элемент … в меню «Проект» с помощью Проект -> Новый элемент , который немного легче обнаружить. Но тогда никто не смотрит туда, не так ли?

Переназначение Ctrl-N в диалоге создания нового элемента

Тогда есть сочетания клавиш …

Как уже упоминалось, ярлык по умолчанию для New Item — , а не Ctrl-N. Я не уверен, из-за переназначения клавиатуры, которое таинственным образом происходит из-за различных установленных расширений, но для меня опция New Item … не имеет никакой связи с клавишами.

Очевидная клавиша — Ctrl-N — сопоставлена ​​с диалоговым окном New File .. , которое, хотя и названо схожим, делает нечто совершенно иное.. В отличие от Новый элемент , диалоговое окно Новый файл открывает новый свободный файл и не добавляет его в проект. Новый элемент открывает новый файл и автоматически добавляет его в проект, а также создает зависимые файлы, добавляет ссылки и т. д., связанные с используемым базовым шаблоном файла.

Сейчас я бы предпочел, чтобы Ctrl-N всегда отображался на New Item . Вы можете легко это исправить в параметрах Visual Studio:

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

Похоже, Visual Studio 2017 по умолчанию Ctrl -N к новому элементу … как и следовало ожидать.

Используйте Ctrl-E, чтобы перейти к поиску в диалоговом окне нового элемента

Другой раздражает то, что в диалоговом окне «Новый элемент» отображается дерево опций высокого уровня, выбранных слева. Вы можете выбирать из общих типов проектов и т. Д. И т. Д. Приятно, что это есть, но по умолчанию это ужасно.

Было бы намного лучше, если бы вы могли просто начать вводить имя типа или расширение (html, xaml, ts что угодно). Но как бы то ни было, вам нужно сначала перейти к окну поиска или даже к списку выбора элементов.

К счастью, вы можете легко использовать поиск Ctrl-E ярлык для перехода к окну поиска. Visual Studio недавно добавила текст-заполнитель в поле поиска, чтобы упростить поиск, но даже в этом случае его легко пропустить.

Для меня мой типичный поток создания новых элементов:

  • Ctrl-N , чтобы открыть диалоговое окно нового элемента.
  • Ctrl-E , чтобы открыть окно поиска
  • Введите текст для поиска , например Окно WPF
  • Tab для вывода списка и прокрутите до элемента (при необходимости).
  • Перейдите к имени файла и измените
  • Нажмите Введите , чтобы добавить файл.

Это много нажатий клавиш даже с сочетаниями клавиш для добавления нового файла, и это действительно то, что считается оптимизированный рабочий процесс. Это разумно, только если мне нужно что-то более сложное, например, элемент многофайлового проекта, например, форма WPF.

Но для нового класса? Неужели нам действительно нужно столько накладных расходов, чтобы добавить один файл в проект?

Рабочий процесс мог бы быть проще!

В идеале я бы хотел увидеть поиск нового элемента поле прямо над списком и по умолчанию сфокусировано. Остальная часть потока работает так, как вы ожидаете сейчас.

FWIW, диалоговое окно New Item намного быстрее, чем то, что было до Visual Studio 2015, и еще лучше в VS 2017 RC, теперь это вопрос оптимизации рабочего процесса внутри него, чтобы сделать его более удобным для пользователя и более удобным для клавиатуры, особенно.

Не забывайте «быстрые» ярлыки

Если вы долгое время использовали Visual Studio, это легко чтобы застрять в колее и даже не обращать внимания на меню, но на самом деле в контекстном меню Добавить есть ряд дополнительных контекстно-зависимых ярлыков:

Меню меняется в зависимости от того, в каком типе проекта вы работаете. Выше приведено для старый проект WebForms. Следующее предназначено для проекта WPF и, возможно, не так сфокусировано:

Эти ярлыки не обходят шаблон New Item , а скорее открывают его с уже выделенным типом файла, который вы выбрали, что значительно ускоряет загрузку нового файла в проект.

Эти сочетания клавиш также доступны в панели меню верхнего уровня Project , поэтому Alt-P , по крайней мере, поможет вам быстро эти сочетания клавиш, но для выбора любого из них по-прежнему нужно использовать клавиатуру/мышь (без сочетаний клавиш), но это все еще быстрее, чем использование мыши и контекстного меню.

Отсутствующие типы файлов

Другая неприятная проблема заключается в том, что в некоторых контекстах проекта определенные типы файлов недоступны.

Например, я работал над проектом WPF с Markdown Monster. MM включает ряд проектов библиотеки классов надстроек, которые ссылаются и потенциально создают свои собственные окна и элементы управления WPF.

Но когда я нахожусь в New Item … в диалоговом окне нет параметров для добавления нового окна Xaml. Есть миллион других неподходящих вариантов, но XAML Window среди них нет:

Так как это не отдельный файл, а файл с кодом, за которым стоит добавить файл вручную, это довольно неприятно. Единственный способ эффективно сделать это — скопировать существующее окно из другого проекта в том же решении и скопировать его в свой проект. Затем очищаю весь код и переименовываю. Этот опыт действительно отстой.

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

Хотя я понимаю, что диалоговое окно «Новый элемент» должно быть контекстно-зависимым от типа проекта, который вы используете, а форма WPF обычно не имеет смысла в веб-проекте, все же должно быть будь вариантом , чтобы показать мне все, поскольку я могу делать что-то нестандартное. В Markdown Monster у меня есть дополнительные проекты, которые могут добавлять пользовательские окна, и добавление новых окон в этот проект — настоящая головная боль.

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

По умолчанию оставьте контекстно-зависимым, но, по крайней мере, дайте мне возможность видеть все через поле выбора.

Новое расширение файла Мэдса Кристенсена

Как всегда, если в Visual Studio есть какой-то недостаток, у Мадса Кристенсена, вероятно, есть расширение для него. И, что верно, есть расширение «Добавить новый файл», которое добавляет возможность «просто создать новый файл»:

Расширение просто позволяет вам ввести имя файла и на основе имени файла определить, какой шаблон использовать и какие зависимости добавить (которые поддерживаются расширением, а не через New Шаблон элемента).

Это отлично подходит для простых файлов, таких как классы C #, файлы JavaScript и TypeScript, файлы HTML и ряд других отдельных файлов. Это не так хорошо работает со сложными файлами, не относящимися к Интернету. Таким образом, я могу создать файл Xaml, и он создаст один пустой файл, что не совсем так полезно, поскольку не подключает окно и код позади (что болезненно делать вручную).

Надстройка также довольно минималистична — она ​​в основном создает пустые файлы. Таким образом, файл C # содержит, например, только заголовок пространства имен using System . Вы можете создать класс. Тем не менее, во многих случаях на самом деле быстрее ввести недостающий код, чем просматривать пользовательский интерфейс нового шаблона элемента и выдавать шаблон, который необходимо затем реорганизовать, чтобы присвоить ему правильное имя и область действия.

Расширение по умолчанию сопоставлено с Shift-F2 , поэтому вы можете добраться туда очень быстро, введите свое имя файла и вперед.

Это замечательно инструмент, который я использую довольно часто, особенно для классов C # в проекте — это, безусловно, самый быстрый способ добавить новый класс в проект.

Он работает, особенно для отдельных файлов, таких как классы, HTML, JS, TS и т. д. Но для других вещей шаблоны, возможно, немного ограничены. При вводе файла XAML, например, не создается файл с выделенным кодом (что имеет смысл, поскольку вы не знаете, какой это тип xaml). Тем не менее, даже с этим ограничением это отличное простое в использовании дополнение к Visual Studio. Скачайте его сейчас, если он еще не установлен, и запомните Shift-F2 .

Visual Studio 2017 — некоторые улучшения

Visual Studio 2017 правильно устанавливает сочетание клавиш Ctrl-N в диалоговом окне «Новый элемент», как и должно быть.

Кажется, что для шаблонов проектов изменений нет, но есть новый режим проекта папки без решения. который предлагает гораздо более легкое добавление файлов.

с последующим вводом имени файла в шаблон проекта:

хотя это создает совершенно пустой файл без каких-либо шаблонов, что не … действительно так полезно.

На самом деле печально то, что эта функция работает только в проектах папок, которые по сути являются проектами на основе файлов, которые показывают вам, что находится на диске, т.е. подход VS Code или Sublime style. В обычных проектах это не работает. для этого мы должны придерживаться расширения Mads.

Контекстное меню Resharper

У Resharper также есть контекстное меню, которое немного упрощает эту задачу. Нажмите Alt-Insert, и вы получите контекстно-зависимые параметры проекта для добавления новых файлов.

Это работает очень быстро и хорошо для базовых элементов этого меню, таких как Class, Struct, Interface и Enum. Но даже несмотря на то, что есть опция Еще … , которая вызывает диалог с дополнительными опциями, варианты там довольно ограничены. Например, в проекте WPF я вижу только словарь ресурсов, а не пользовательский элемент управления, окно, ресурсы и т. Д., Которые вы ожидали бы.

Резюме

Visual Studio и поддержка Инструменты предоставляют огромное количество способов создания новых элементов в проектах, но большинство из них довольно интенсивны. Visual Studio действительно нуждается в очень быстром подходе, ориентированном на клавиатуру (или один щелчок мыши в контекстном меню), для добавления новых файлов в проект. Текущее диалоговое окно «Новый элемент», которым пользуется большинство людей, — это ужасная трата времени разработчика.

Даже со всеми этими различными способами добавления файлов в проект кажется, что этот процесс невероятно трудоемок. Проект папки VS 2017 кажется хорошей отправной точкой в ​​качестве альтернативного варианта, но для большей жизнеспособности требуется больше шаблонов, ориентированных на типы файлов. Расширение Мадса предоставляет кое-что из этого, но это нечто настолько фундаментальное, что оно должно быть встроено. В конце концов, практически любой редактор поддерживает быстрое редактирование файлов.

Почему я говорю об этом? Я убежден, что это одна из основных причин, по которой люди воспринимают Visual Studio как медлительного зверя. Новый файловый диалог и совместная работа — это воплощение того, что предлагает предписанный подход, и, заставляя людей идти по сложному пути делать простые вещи, вы создаете ощущение сложности и властности. Предписанный подход очень полезен, но вам также должны быть доступны более быстрые и простые варианты, желательно по умолчанию.

Тем не менее, для сегодняшних потребностей, с таким количеством доступных вариантов, что стоит проанализировать ваш процесс того, как вы выполняете обычные задачи, такие как добавление файлов в проекты, чтобы сэкономить драгоценные секунды, потраченные разработчиком на повторяющиеся задачи, такие как добавление файлов в проект.

этот пост создан с помощью Markdown Monster

Другие сообщения, которые могут вам также понравиться

  • Исправление Visual Studio Ошибки Intellisense
  • Исключение файлов и папок в проекте веб-сайта Visual Studio
  • Открытие веб-браузера с URL-адресом HTTP из кода Visual Studio
  • Visual Studio 2019.2 и .NET 3. 0 Проекты SDK не загружаются


Как добавить существующее дерево каталогов в проект в Visual Studio?

Вопрос действительно прост. Вместо создания папок в Visual Studio я создаю структуру каталогов для своего проекта в файловой системе. Как мне включить все папки и файлы в проект, сохранив структуру?

Если я «Добавить существующий файл» в папку с именем Services и перейду к файлу в структуре каталогов .. Services > AccountManagement> CreateAccount.cs, в Visual Studio он отображается так: Services> CreateAccount.cs. Я не хочу этого.

У меня уже проработана вся структура каталогов, так как я имитирую наших разработчиков-клиентов, использующих ту же структуру для организации. Как добавить в проект все папки и файлы в Visual Studio? Или мне нужно делать то, что делают большинство пользователей Microsoft, и «мириться с этим» и воссоздавать каждую папку с помощью Visual Studio?


Вам нужно поместить структуру каталогов в каталог вашего проекта. Затем щелкните значок «Показать все файлы» в верхней части панели инструментов обозревателя решений. После этого появится добавленный каталог. Затем вам нужно будет выбрать этот каталог, щелкнуть правой кнопкой мыши и выбрать «Включить в проект».


Вы также можете перетащить папку из проводника Windows в окно решения Visual Studio.

14


В Visual Studio 2015 это делается следующим образом.

Если вы хотите автоматически включать все дочерние файлы в определенную папку:

    

Это может быть ограничено включением только файлов по указанному пути:

     

Или даже только файлы с указанным расширением:

    

3


Копировать и вставить .

Чтобы добавить папку, все подкаталоги и файлы, мы также можем скопировать и вставить. Например, мы можем:

  1. Щелкните правой кнопкой мыши в проводнике Windows по папке и скопируйте папку с множеством файлов и папок.

  2. Затем в обозревателе решений Visual Studio щелкните правой кнопкой мыши папку назначения и нажмите «Вставить».

  3. Необязательно добавить в TFS; Затем в верхней папке щелкните правой кнопкой мыши и зарегистрируйтесь в TFS, чтобы проверить все подпапки и файлы..

2


Вы можете использовать символическую ссылку. Это заставляет изменять файл в одном проекте и изменять его в другом (поскольку это фактически тот же файл).

Для этого:

  1. Открыть cmd приглашает от имени администратора
  2. mklink/d [имя каталога текущего проекта] [каталог в другом проекте, на который он должен указывать]

У этого есть свои недостатки и подводные камни, но я иногда использую его для дублирования библиотек, которым нужны разные имена.

Редактировать для Anoop: шаги по добавлению в Visual Studio:

  1. Создайте ссылку в папке проекта, используя описанные выше действия.
  2. В Visual Studio … выберите проект в обозревателе решений.
  3. В верхней части обозревателя решений … нажмите кнопку «Показать все файлы» (может потребоваться дважды щелкнуть ее, если она уже активна).
  4. Теперь ссылка будет отображаться в вашем проекте … щелкните правой кнопкой мыши и выберите «Включить в проект».

Это шаги, которым я следую и работаю для пары разных проектов.

4


В Visual Studio 2017 вы переключаетесь между представлением решения и Просмотр папки вперед и назад. Я думаю, что это лучший вариант, потому что он сохранит чистоту раствора. Я использую это для редактирования файлов .gitignore, .md и т. Д.

2


Чтобы расширить ответ Ючена, вы можете включить файлы и пути в качестве ссылки. Это не то же самое, что добавление существующих элементов, потому что при этом не создается дополнительная копия в структуре папок вашего проекта. Это полезно, если вы хотите, чтобы одна каноническая папка/файл и т. Д. Использовалась во множестве разных мест, но вы хотите поддерживать только одну ее версию/копию.

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

   HelpersRegexExtensions.cs    Helpers  ExceptBy.cs    % (RecursiveDir)% (Имя файла)%  (Расширение)  PreserveNewest 

$ (Codez) — это переменная среды Windows. Я определил, что вы можете использовать встроенные переменные среды таким же образом.

Последняя группа примеров — это набор файлов содержимого, которые мне нужны в окончательном выводе. См. Https://stackoverflow. com/a/11808911/492 и другие ответы и ссылки для получения дополнительной информации.

Дополнительная информация о MSBuild на https://msdn.microsoft.com/en-us/library/bb629388.aspx

0


Думаю, я нашел способ сделать это с помощью Compile Include = «. Code ***. cs» Я хотел включить рекурсивно кодировать в моей папке кода.

Вот пример файла проекта.

     Библиотека         > Autogen          

0


В Visual Studio 2013 я не мог заставить работать «Включить в проект» при щелчке правой кнопкой мыши по папке. Что действительно помогло, так это расширение папки, выбор всех файлов и выбор «Включить в проект». Это было довольно утомительно, так как вам нужно делать каждую папку одну за другой (но, по крайней мере, вы можете делать все файлы в каждой папке за один раз), и, похоже, сохраняет путь к файлу (вы можете увидеть это, просмотрев свойства файла и глядя на параметр «Относительный путь».)

Я надеюсь использовать это для развертывания некоторых файлов данных в проекте установщика Visual Studio, и, похоже, он выбирает включенные файлы и сохраняет их пути.


Насколько я могу судить, единственный способ сделать это в VS2010 похоже на метод перетаскивания. Щелкните правой кнопкой мыши решение, к которому вы хотите добавить проект. В меню приложения будет пункт добавить … Открыв его, вы обнаружите, что один из вариантов — добавить в решение существующий проект.

В открывшемся диалоговом окне перейдите к папке, содержащей файл проекта для решения, и выберите его. VS, как часть импорта этого файла проекта, также импортирует весь каталог и, я предполагаю, все подчиненные каталоги, которые являются частью этого проекта.

Поскольку для этого требуется существующий файл проекта, он выиграл невозможно импортировать дерево каталогов, пока это дерево не будет преобразовано в проект.


Я не нашел удовлетворительного ответа, поэтому разобрался сам .

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

Предположим, это структура:

/root/projA/src

/root/projA /включает

/root/projB/src

/root/projB/includes

/root/yourProj/src

/root/yourProj/includes

  1. Запустите решение VS.
  2. Щелкните правой кнопкой мыши имя проекта прямо под решением .
  3. Затем нажмите «Добавить», «Новый фильтр», введите имя «projA» для projA.
  4. Щелкните правой кнопкой мыши «projA», нажмите « Добавить «,» Новый фильтр «, введите имя» src «
  5. Щелкните правой кнопкой мыши» projA «, выберите» Добавить «,» Новый фильтр «, введите имя» включает «
  6. Щелкните правой кнопкой мыши «projA»/«src», выберите «Добавить», «Существующий элемент», затем перейдите к/root/projA/src, чтобы добавить все исходные коды или один за другим те, которые вы хотите .
  7. Сделайте то же самое для «projA»/»includes»
  8. Сделайте то же самое для projB. Теперь внешние/существующие проекты за пределами вашего присутствуют в ваше решение/проект. VS скомпилирует их вместе. Вот трюк. Поскольку projA и projB являются виртуальными папками в вашем проекте, компилятор может не найти файл projA/includes.

  9. Если он не находит projA/includes, щелкните проект правой кнопкой мыши и выберите «Свойства».

  10. Перейдите к «C/C ++». Отредактируйте «Дополнительные каталоги включения», добавьте свой projA/include как таковой «../projA/includes», относительный путь.

Одно предостережение, если есть дублирующиеся файлы include/header , «исключить из проекта» в «заголовочном файле» на самом деле не работает. Это ошибка в VS.


Visual Studio 2017 и новее поддерживают новый облегченный формат .csproj , известный как «формат SDK». Одним из нескольких преимуществ этого формата является то, что вместо списка файлов и папок, которые включены , файлы по умолчанию включаются подстановочными знаками. Таким образом, в этом новом формате ваши файлы и папки, добавленные в проводнике или в командной строке, будут загружены автоматически!

Формат SDK .csproj в настоящее время работает со следующими типами проектов:

  • Проекты библиотеки классов

  • Консольные приложения

  • Веб-приложения ASP.NET Core

  • . NET Core любого типа

Чтобы использовать новый формат, создайте новый проект .NET Core или .NET Standard. Поскольку шаблоны не были обновлены для полной платформы .NET Framework даже в Visual Studio 2019, для создания библиотеки классов .NET выберите шаблон стандартной библиотеки .NET, а затем отредактируйте файл проекта, чтобы настроить таргетинг на выбранную версию платформы ( формат проекта нового стиля можно редактировать в Visual Studio — просто щелкните проект правой кнопкой мыши в обозревателе решений и выберите «Изменить файл проекта»). Например:

     net46     

Дальнейшее чтение:

  • Старый csproj до нового csproj: руководство по обновлению Visual Studio 2017
  • Демистификация Проект SDK
  • MSDN: дополнения к формату csproj для .NET Core
0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий