Как скопировать форму или компонент из одного проекта в другой
Когда начинаешь новый проект в C# часто может возникнуть необходимость перенести из предыдущих проектов какие-то свои наработки. Добавление формы или класса с нуля и потом поэтапное копирование текста программ с предыдущих проектов — не очень-то быстрый и удобный вариант. Но есть способ гораздо проще. Опишу его ниже на примере Visual Studio 2010, думаю в других версия делается аналогично.
Алгоритм действий для копирования формы из одного проекта в другой проект
1. Открываем текущий проект
2. В обозревателе решений на самом верхнем пункте (проекте) нажимаем правой кнопкой мышки и выбираем добавить существующий проект

3. В открывшемся окне выбираем проект из которого хотим скопировать форму или компонент. В результате чего получится что-то вроде этого:

4. Теперь обычным копированием и вставкой копируем, например, форму из одного проекта в другой.


5. Теперь ненужный проект (из которого копировали) можно удалить. При этом будет удален не сам проект и его файлы, а лишь ссылка на него.
Вот и всё. В результате этих нехитрых манипуляций Вы сможете легко скопировать свои наработки из одного прокта в другой.
Как правильно добавлять существующие проекты в решение в Visual Studio 2019? C#
Хочу сделать одно решение, где будет несколько проектов, после чего добавить их в VCS(GitHab). Несколько проектов уже написано. Проект представляет из себя одно решение, где есть несколько проектов касательного самого задания и проект тестов. Так вот, начал добавлять в только созданное решение(библиотека классов) эти проекты через — Добавить — Существующий проект — выбираю нужный .csproj файл. Добавляю. Потом начинают сыпаться одни и те же ошибки: данный проект ссылается на пакеты nuget отсутствующие на этом компьютере. Окей, посмотрел на какие пакеты NuGet ругается, установил их. Пересобрал — ничего, та же ошибка. Это первая проблема. Вторая — я сомневаюсь, что правильно их вообще добавляю, потому что я зашел через проводник в папку самого решения, а там ничего не появляется(кроме ссылок на проекты, как я полагаю), а если я потому буду загружать это на GitHub(при этом первоисточник, где находятся проекты, может быть удален и т.д., хочется, чтобы в новом решении были копии проектов, а не ссылка на них).
Отслеживать
задан 30 июл 2020 в 6:12
399 3 3 серебряных знака 15 15 бронзовых знаков
Если у вас все нужные вам файлы в одной папке, то вы добавляйте проекты как хотите, на github будет залита вся папка все равно.
30 июл 2020 в 8:38
Вообще это с архитектурой что то не так похоже у вас, зачем разделять на проекты. При таком подходе, как описано «траблы» обеспечены. Либо объединить в один проект. Либо, если у вас есть два проекта, которые выполняют различные задачи, то тогда лучше организовать микросервисную архитектуру.
30 июл 2020 в 9:24
@tym32167 может я не совсем точно описан конечную цель — хочу объединить несколько репозиториев на github в один. Поэтому подумал, что надо в одно решении собрать все проекты и загрузить на github
Решения в Visual Studio

В отличие от простейших программ, таких как «Hello World», большинство приложений состоит из нескольких исходных файлов. Это обстоятельство порождает массу проблем, в частности, как назвать файлы, где их разместить и можно ли их использовать повторно. В интегрированной среде разработки Visual Studio принята концепция решения (solution), состоящего из ряда проектов, которые в свою очередь состоят из ряда элементов, благодаря которой разработчики могут работать с исходными файлами. Интегрированная среда разработки имеет множество встроенных инструментов, позволяющих упростить этот процесс, обеспечив разработчикам доступ к большей части их приложений. Далее рассматриваются структура решений и проектов, доступные типы проектов и способы настройки их конфигурации.
Структура решения
Работая с системой Visual Studio, пользователь открывает решение. При повторном редактировании специальных файлов создается временное решение, которое можно уничтожить по окончании работы. Однако решение позволяет управлять текущими файлами, поэтому в большинстве случаев его сохранение означает, что пользователь может вернуться к тому, что он делал накануне, и вновь открыть файлы, с которыми он работал.
Решение можно интерпретировать как контейнер связанных между собой проектов. Проекты внутри решения не обязательно должны быть написаны на одном и том же языке программирования или иметь одинаковый тип. Например, решение может содержать веб-приложение ASP.NET, написанное на языке Visual Basic, библиотеку на языке F# и WPF-приложение, написанное на языке C#. Решение позволяет пользователю открыть всё эти проекты в интегрированной среде разработки, а также управлять общими настройками для их создания и развертывания.
Наиболее распространенным способом структурирования приложений в среде Visual Studio является одно отдельное решение, содержащее много проектов. Каждый проект можно создать из набора исходных файлов и папок. Главное окно, в котором пользователь работает с решениями и проектами, называется Solution Explorer:

Для организации работы с исходным кодом и предотвращения его ассоциации с приложениями (за исключением веб-приложений, в которых существуют специальные папки, имеющие особое предназначение в данном контексте) используются папки (folders). Некоторые разработчики используют имена папок, соответствующие пространствам имен, которым принадлежат классы. Например, если класс Person находится в папке DataClasses в проекте FirstProject, то полностью квалифицированное имя класса может выглядеть как FirstProject.DataClasses.Person.
Папки решения (solution folders) — полезный способ организации проектов в большом решении. Они отображаются только в окне Solution Explorer — физически в файловой системе их не существует. Такие действия, как Build или Unload, можно легко выполнять над всеми проектами, включенными в папку решения. Для того чтобы разгрузить окно Solution Explorer, папки решения могут быть свернуты или скрыты.
Скрытые проекты по-прежнему создаются, когда пользователь создает решение. Поскольку папки проекта не соответствуют физическим папкам, их можно добавлять, переименовывать и удалять в любое время, не рискуя повредить связи между файлами или потерять контроль над исходными файлами.
Бытует распространенное заблуждение, что отдельный проект обязательно должен соответствовать отдельной .NET-сборке. Хотя в принципе это верно, довольно часто одну сборку могут представлять несколько проектов. Однако эта ситуация системой Visual Studio 2013 не поддерживается, поэтому мы будем считать, что один проект соответствует одной сборке.
Папка Miscellaneous Files — это специальная папка решения, которую можно использовать для того, чтобы следить за тем, какие еще файлы, не являющиеся частью какого-либо проекта в решении, были открыты в системе Visual Studio. По умолчанию папка Miscellaneous Files скрыта. Для того чтобы сделать ее видимой, следует выполнить команду Tools —> Options —> Environment —> Documents —> Show Miscellaneous Files.
Несмотря на то что формат файла решения, принятый в предыдущих версиях, не изменился, в системе Visual Studio 2010 открыть файл решения, созданный в версии Visual Studio 2013, невозможно.
Кроме информации о файлах, содержащихся в приложении, файлы решения и проектов могут содержать и другие записи, например, о том, как именно должен быть скомпилирован конкретный файл, об установках проекта, о ресурсах и многом другом. Система Visual Studio 2013 имеет немодальное диалоговое окно для редактирования свойств проекта, в то время как свойства решения по-прежнему открываются в отдельном окне. Как и следовало ожидать, свойствами проекта считаются те свойства, которые относятся только к данному проекту, например информация о сборке и связях, а свойства решения определяют общую конфигурацию для сборки приложений.
Формат файла решения
Система Visual Studio 2013 фактически создает для решения два файла, имеющих расширения .suo и .sln (solution file). Первый — это довольно неинтересный бинарный файл, который сложно редактировать. Он содержит информацию, специфичную для пользователя, например, какие файлы были открыты, когда решение закрывалось в последний раз и где находились контрольные точки. Этот файл скрыт, поэтому он не должен появляться в папке решения при использовании Windows Explorer, если не снять с него соответствующую метку.
Иногда файл .suo оказывается поврежденным, и это вызывает непредсказуемые последствия при сборке и редактировании приложений. Если при работе с конкретным решением система Visual Studio становится нестабильной, необходимо выйти из нее и удалить файл с расширением .suo. Он будет создан заново системой Visual Studio, когда решение будет открыто в следующий раз. Файл решения с расширением .sln содержит информацию о решении, например список проектов, конфигурации сборки и другие настройки, не специфичные для проекта. В отличие от многих файлов, используемых в системе Visual Studio 2013, файл решения не является XML-документом. Он хранит информацию в блоках, как показано в следующем примере:
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("") = "GettingStarted", "GettingStarted\GettingStarted.csproj", "" EndProject Project("") = "Information Services", "Information Services\Information Services.csproj", "" EndProject Project("") = "Reference Library", "Reference Library\Reference Library.csproj", "" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution .Debug|Any CPU.ActiveCfg = Debug|Any CPU .Debug|Any CPU.Build.0 = Debug|Any CPU .Release|Any CPU.ActiveCfg = Release|Any CPU .Release|Any CPU.Build.0 = Release|Any CPU .Debug|Any CPU.ActiveCfg = Debug|Any CPU .Debug|Any CPU.Build.0 = Debug|Any CPU .Release|Any CPU.ActiveCfg = Release|Any CPU .Release|Any CPU.Build.0 = Release|Any CPU .Debug|Any CPU.ActiveCfg = Debug|Any CPU .Debug|Any CPU.Build.0 = Debug|Any CPU .Release|Any CPU.ActiveCfg = Release|Any CPU .Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal
В этом примере решение состоит из трех проектов (GettingStarted, Information Services и Reference Library), а раздел Global содержит настройки, которые применяются к решению. Например, само решение будет видимым в окне Solution Explorer, потому что настройка HideSolutionNode установлена равной FALSE. Если изменить ее на TRUE, имя решения не будет отображаться в системе Visual Studio.
Если решение состоит из проектов, которые не нацелены на использование платформы .NET Framework версии 4.0, решение можно открыть в системе Visual Studio 2008, выполнив небольшое редактирование файла .sln. Необходимо просто заменить две первые строки файла приведенными ниже, и решение откроется без ошибок.
Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008
Свойства решения
Для того чтобы открыть диалоговое окно Properties, необходимо щелкнуть правой кнопкой мыши на узле Solution в окне Solution Explorer и выбрать команду Properties. Это диалоговое окно содержит два узла: Common properties и Configuration properties, как показано на рисунке ниже:

Более подробно узлы Common properties и Configuration properties описываются в следующих разделах.
Узел Common Properties
Определяя проект Startup Project для приложения, пользователь имеет три возможности, которые являются практически очевидными. Выбор Current Selection запускает проект, который в данный момент находится в фокусе окна Solution Explorer. Вариант Single Startup гарантирует, что каждый раз будет запускаться один и тот же проект. Эта установка задается по умолчанию, поскольку большинство приложений имеют только один стартовый проект. Последний вариант, Multiple Startup Projects, позволяет запускать несколько проектов в определенном порядке. Это может быть полезным при работе с приложением клиент/сервер в рамках одного решения, причем требуется, чтобы и клиент, и сервер выполнялись одновременно. При выполнении нескольких проектов важно контролировать порядок их запуска. Для управления порядком запуска проектов можно использовать навигационные кнопки, расположенные после списка проектов.
Раздел Project Dependencies используется для того, чтобы задавать другие проекты, от которых зависит конкретный проект. В большинстве случаев система Visual Studio сама управляет этими свойствами, когда пользователь добавляет или удаляет связи между проектами и данным проектом. Однако иногда пользователь может самостоятельно создать связи между проектами, чтобы они собирались в заданном порядке. Система Visual Studio использует этот список зависимостей, для того чтобы определить порядок сборки проектов. Окно этого раздела предотвращает неосторожное добавление циклических связей и удаление необходимых зависимостей между проектами.
В разделе Debug Source Files можно создать список каталогов, в которых система Visual Studio может искать исходные файлы при отладке. Этот список задается по умолчанию и просматривается перед открытием диалогового окна Find Source. Кроме того, пользователь может перечислить исходные файлы, которые система Visual Studio не должна искать. Если щелкнуть на кнопке Cancel в момент, когда система предлагает найти конкретный исходный файл, то он будет добавлен в этот список.
Раздел Code Analysis Settings доступен только в версии Visual Studio Team Suite. Это позволяет выбирать набор правил статического анализа кода, которые будут применяться к конкретному проекту. Более подробно раздел Code Analysis обсуждается далее.
Узел Configuration Properties
И проекты, и решения имеют конфигурации для сборки, определяющие, какие элементы должны быть собраны и почему. Это может сбить пользователя с толку, потому что на самом деле между конфигурацией проекта, определяющей, как должны собираться элементы, и конфигурацией решения, определяющей, какие проекты должны быть собраны, нет никакой корреляции, кроме случаев, когда они имеют одинаковые имена. Новое решение определит конфигурации Debug и Release (решения), что эквивалентно сборке всех проектов в решении с помощью конфигураций Debug и Release (проекта).
Например, может быть создана новая конфигурация решения Test, состоящая из двух проектов: MyClassLibrary и MyClassLibraryTest. Когда пользователь создает свое приложение в конфигурации Test, он хочет, чтобы проект MyClassLibrary был собран в режиме Release, чтобы тестировать его в виде, максимально приближенном к окончательной версии. Однако, чтобы проверить тестируемый код, необходимо собрать тестовый проект в режиме Debug.
Когда пользователь собирает проект в режиме Release, он не хочет, чтобы решение Test было собрано или развернуто вместе с приложением. В данном случае в конфигурации решения Test можно указать, что пользователь хочет, чтобы проект MyClassLibrary был собран в режиме Release, а проект MyClassLibraryTest вообще не собирался.
Пользователь может легко переключаться между этими конфигурациями с помощью меню Configuration стандартной инструментальной панели. Однако, переключаться между платформами не так легко, потому что меню Platform нет ни в одной инструментальной панели. Для того чтобы сделать ее доступной, необходимо выбрать команду View —> Toolbars —> Customize. Затем элемент Solution Platforms из категории Build на закладке Command можно перетащить на инструментальную панель.
Следует отметить, что, выбрав узел Configuration Properties в диалоговом окне Solution Properties, как показано на рисунке ниже, можно получить доступ к раскрывающимся спискам Configuration и Platform. Раскрывающийся список Configuration содержит все доступные конфигурации решения: Debug и Release (заданные по умолчанию), Active и All Configurations. Аналогично в раскрывающемся списке Platform перечислены все доступные платформы. Как только пользователь получит доступ к этим раскрывающимся спискам, он может на этой же странице задать настройки для каждой конфигурации и/или платформы. Для того чтобы добавить новые конфигурации и/или платформы для решения, пользователь может также использовать кнопку Configuration Manager.

При добавлении новых конфигураций решения существует возможность (предусмотренная по умолчанию) создания соответствующих конфигураций для существующих проектов (по умолчанию все проекты будут собираться в новой конфигурации решения), а также возможность создать новую конфигурацию на основе существующих. Если флажок Create Project Configurations установлен и новая конфигурация основана на существующей, то новые конфигурации проекта будут копировать конфигурации проекта, заданные для существующей конфигурации.
Возможности, доступные для создания новых платформенных конфигураций, ограничены типами доступных центральных процессоров: Itanium, x86 и x64. Новая платформенная конфигурация также может основываться на существующих платформенных конфигурациях, и существует возможность создания платформенной конфигурации для проекта.
В конфигурационном файле решения можно также задать тип центрального процессора, для которого оно собирается. Это особенно удобно, если нужно развернуть приложение для компьютеров с 64-битовой архитектурой. Установить настройки для всех этих решений можно непосредственно в контекстном меню, которое открывается после щелчка правой кнопкой мыши на узле Solution node в окне Solution Explorer. В то время как команда Set Startup Projects открывает окно конфигурации решения, команды Configuration Manager, Project Dependencies и Project Build Order открывают окно Configuration Manager and Project Dependencies. Команды Project Dependencies и Project Build Order отображаются в окне, только если решение состоит из нескольких проектов.
Команда Project Build Order открывает окно Project Dependencies и перечисляет порядок сборки, как показано на рисунке ниже:

Закладка Build Order демонстрирует порядок, в котором должны собираться проекты в соответствии с зависимостями между ними. Это может оказаться полезным, если пользователь поддерживает ссылки на бинарные сборки проектов, а не ссылки на проекты. Кроме того, эту возможность можно использовать для двойной проверки того, что проекты будут собраны в правильном порядке.
Создавайте проекты и решения Visual Studio, работайте с ними и удаляйте их
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Из этой статьи вы узнаете, как создавать с нуля и использовать проекты Visual Studio для хранения артефактов, необходимых для создания приложений. Если вы не знакомы с проектами в Visual Studio, см. этот обзор проектов и решений. Сведения о том, как быстро создать проект из шаблона, см. в статье «Создание нового проекта в Visual Studio».
Проекты содержат объекты, необходимые для создания приложения в Visual Studio, например файлы исходного кода, растровые изображения, значки, а также ссылки на компоненты и службы. Когда вы создаете проект, Visual Studio создает решение, в котором будут содержаться проекты. После этого в решение при необходимости можно добавить другие новые или существующие проекты. Можно также создавать пустые решения. Решения также могут содержать файлы, не связанные с определенным проектом.

Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Создание проектов в Visual Studio для Mac.
Решения и проекты можно просматривать в окне инструментов, которое называется обозревателем решений. На следующем снимке экрана показан пример консольного решения C# в Обозреватель решений, который содержит два проекта: Калькулятор и КалькуляторLibrary. Каждый проект содержит несколько файлов и папок. Полужирным шрифтом выделено имя запускаемого проекта. Этот проект выполняется при запуске приложения. Вы можете выбрать запускаемый проект.
Вы можете создать проект самостоятельно, добавив в него необходимые файлы, однако в Visual Studio также предлагается ряд шаблонов, помогающих быстро приступить к работе. Используя шаблон, вы получаете проект, который уже содержит все основные компоненты для проекта данного типа. Вы можете переименовывать файлы, как вам требуется, а также добавлять новый или существующий код и другие ресурсы.
Это говорится, что решения и проекты не требуются для разработки приложений в Visual Studio. Вы также можете открыть код, клонированные из Git или скачанный в другом месте. Дополнительные сведения см. в статье Разработка кода в Visual Studio без использования проектов и решений.
Создание проекта из шаблона проекта
Сведения о том, как выбрать шаблон для создания нового проекта, см. в статье Создание проекта в Visual Studio. А пример проекта и решения, созданного с нуля, а также пошаговые инструкции и пример кода см. в статье Общие сведения о проектах и решениях.
Создание проекта из существующих файлов с текстом программ
Если у вас есть коллекция файлов исходного кода, вы можете легко добавить их в проект.
- Последовательно выберите Файл>Создать>Project From Existing Code (Проект из существующего кода).
- В мастере создания проекта по существующим файлам с кодом выберите в раскрывающемся списке Задать тип проекта нужный тип проекта, а затем нажмите Далее.
- В мастере перейдите к месту хранения файлов и введите имя нового проекта в поле Имя. По завершении нажмите кнопку «Готово «.
Этот вариант лучше всего подходит для относительно простой коллекции файлов. Сейчас поддерживаются только типы проектов C++, Apache Cordova, Visual Basic и C#.
Добавление файлов в решение
Если у вас есть файлы, которые относятся к нескольким проектам, например файл сведений для решения или иные файлы, которые относятся к уровню решения, а не отдельного проекта, их можно добавить в само решение. Чтобы добавить элемент в решение, щелкните правой кнопкой мыши узел решения в Обозревателе решений и выберите в контекстном меню пункты Добавить>Новый элемент или Добавить>Существующий элемент.
Файл решения представляет собой структуру для организации проектов в Visual Studio. Он содержит состояние этих сведений в двух файлах: SLN (текстовый файл, общий) и SUO (двоичный, скрытый, параметры решения для конкретного пользователя). Таким образом, решение — это не ресурс, который нужно копировать и переименовывать; вместо этого лучше создать новое решение, а затем добавить в него существующие элементы.
Сравнение файлов
Начиная с версии 17.7 можно сравнить файлы в Обозреватель решений с помощью параметров контекстного меню правой кнопкой мыши. Дополнительные сведения см. в разделе «Средство сравнения файлов» на странице «Сведения о Обозреватель решений».
Создание проекта .NET, настроенного для конкретной версии .NET Framework
При создании проекта .NET Framework можно указать определенную версию платформы .NET Framework, которую он должен использовать. (При создании проекта .NET Core версию платформы указывать не нужно.)
Чтобы указать версию платформа .NET Framework, выберите раскрывающееся меню Framework на странице «Настройка нового проекта«.


Создание пустых решений
Вы также можете создавать пустые решения, не содержащие проектов. Это может быть предпочтительно, если вы хотите создать решение и проекты с нуля.
Создание пустого решения
- В строке меню выберите Файл>Создать>Проект.
- В поле поиска на странице Создание проекта введите решение.
- Выберите шаблон «Пустое решение » и нажмите кнопку «Далее«.
- Введите значение Имя и Расположение для решения, а затем нажмите Создать.
После создания пустого решения к нему можно добавить новые или существующие проекты или элементы, выбрав пунктДобавить новый элемент или Добавить существующий элемент в меню Проект.
Как было сказано ранее, вы также можете открывать файлы кода без использования проекта или решения. Сведения о разработке кода таким образом см. в статье Разработка кода в Visual Studio без использования проектов и решений.
Удаление решения, проекта или элемента
Контекстное меню можно использовать для удаления решений, проектов или элементов в Visual Studio, но только, чтобы удалить их из текущего решения или проекта.
Чтобы полностью удалить решение или другой компонент из системы, удалите папку, содержащую файлы SLN и SUO решения, используя проводник Windows. (Перед удалением решения вы, возможно, захотите выполнить резервное копирование проектов и файлов на случай, если они вам понадобятся позже).
SUO-файл является скрытым и не отображается, если проводник имеет параметры по умолчанию. Для отображения скрытых файлов в меню Вид проводника установите флажок Скрытые элементы.
Окончательное удаление решения
Вы можете перейти к проводнику в Windows, используя Обозреватель решений в Visual Studio. Это делается следующим образом.
- В Обозревателе решений щелкните правой кнопкой мыши меню (контекстное меню) решение, которое вы хотите удалить, и выберите Открыть папку в проводнике.
- В проводнике перейдите на один уровень вверх.
- Выберите папку, содержащую решение, и нажмите клавишу DELETE.
Связанный контент
- Общие сведения о проектах и решениях
- Управление свойствами проектов и решений
- Фильтрация решений в Visual Studio
- Примеры кода от разработчиков