0

подскажите как хранить программу C# в Visul studio по разным файлам(ООП каждый класс в отдельном файле). И как избежать проблемы(если такие будут) при компиляции одной программы в один файл .exe? То есть как создать файл в этой же директории(отдельный класс). Нужно ли будет в каждой файле подключать классы которые нужны? (Можно ли вынести это в отдельный файл и подключать его).

artemgh
  • 659
  • 5
  • 20
  • 2
    Создаётся тут-же вопрос, зачем? Зачем этот лишний геморрой с кучей файлов? А если по факту - то весь CSharp это набор таких самых библиотек. Называется это дело Class Library и создаётся прям в Solution файлах https://www.c-sharpcorner.com/UploadFile/1e050f/creating-and-using-dll-class-library-in-C-Sharp/ – Eugene X Nov 09 '21 at 08:31
  • 3
    В Visual Studio есть возможность смотреть используемые файлы всего проекта. Чтобы открыть это окно необходимо перейти в меню "Вид" -> "Обозреватель решений". В нем Вы можете добавлять папки или файлы. Для подключения своих классов используйте ключевое слово using namespace_вашего_файла. После компиляции программы через VS в папке bin\debug будет ВашПроектНейм.exe файл, который вы и можете запускать (если необходимы какие-либо dll для работы с файлом, они так же будут лежать в одной директории) – Aarnihauta Nov 09 '21 at 08:33
  • Создайте проект в Visual Studio, добавляйте в него сколько угодно файлов, проект соберется в один. Чтобы разбить решение по сборкам (dll), нужно на каждую библиотеку создавать отдельный проект. – aepot Nov 09 '21 at 08:33
  • @EugeneX лишний геморой? А как вы предлагаете? хранить все классы в одном файле? – artemgh Nov 09 '21 at 08:33
  • 5
    1 файл - 1 класс. На собранный проект разбитие C# кода на файлы никак не влияет. Я вообще недоумеваю, откуда ваш вопрос взялся, ведь проблемы, о которой вы пишете, на самом деле нет. Нужен конкретный пример, как ее воспроизвести. Ведь чтобы что-то исправить - надо видеть, что сломалось. – aepot Nov 09 '21 at 08:34
  • @aepot именно так я и хочу, просто большой вопрос был как раз с использованием Using clasname. Хотелось всё зависимости вынести ещё в один отдельный файл, а потом этот файл подключать в начале каждого файла – artemgh Nov 09 '21 at 08:35
  • 1
    Создайте файл, там где строка namespace будет название соответствующего namespace'а. Его и используйте при подключении через using – Aarnihauta Nov 09 '21 at 08:36
  • 1
    @aepot ничего не ломалось, как раз спрашиваю, чтобы потом ничего не ломалось) – artemgh Nov 09 '21 at 08:37
  • 1
    С помощью using подключаются не файлы, а неймспейсы. В одном неймспейсе может быть много классов, а при условии "1 файл - 1 класс", следует, что в 1 неймспейсе может быть много файлов. Это нормально. Ну вы попробуйте, поэкспериментируйте, нормально оно работает. – aepot Nov 09 '21 at 08:37
  • 1
    Структурно - одна папка с cs файлами = 1 неймспейс. – aepot Nov 09 '21 at 08:38
  • Хорошо, благодарю, за ответы. Просто я PHP-шник( – artemgh Nov 09 '21 at 08:38
  • Плюсом у меня WPF project и получается что под каждым файлом .xaml свой файл .cs – artemgh Nov 09 '21 at 08:40
  • @artemgh тогда сразу скажу, что конкатенация строк через + в шарпе, а не через . :) – aepot Nov 09 '21 at 08:41
  • 1
    @artemgh это студия вам показывает как cs под xaml, для удобства, на самом деле это 2 разных файла, лежащих просто рядом в одной папке. – aepot Nov 09 '21 at 08:42
  • @aepot тогда сразу скажу, что конкатенация строк через + в шарпе, а не через . :). Ахаха, да спасибо, хотя для меня всегда было "+" и это было вопросом при переходе на PHP) – artemgh Nov 09 '21 at 08:43
  • Если речь про WPF - начните копать в сторону шаблона проектирования MVVM. Там будет очень много ответов на вопросы о структуре приложения. – aepot Nov 09 '21 at 08:44
  • 1
    @aepot Хорошо, подытожите всё в одном ответе? – artemgh Nov 09 '21 at 08:45

1 Answers1

4

Скомпилирую свои комменты в ответ.

Создайте проект в Visual Studio, добавляйте в него сколько угодно файлов, проект соберется в один исполняемый модуль (exe файл например). Чтобы разбить решение по сборкам (dll), нужно на каждую библиотеку создавать отдельный проект.

1 файл - 1 класс. На собранный проект разбитие C# кода на файлы никак не влияет. Я вообще недоумеваю, откуда ваш вопрос взялся, ведь проблемы, о которой вы пишете, на самом деле нет. Нужен конкретный пример, как ее воспроизвести. Ведь чтобы что-то исправить - надо видеть, что сломалось.

С помощью using подключаются не файлы, а неймспейсы. В одном неймспейсе может быть много классов, а при условии "1 файл - 1 класс", следует, что в 1 неймспейсе может быть много файлов. Это нормально. Ну вы попробуйте, поэкспериментируйте, нормально оно работает.

Если речь про WPF - начните копать в сторону шаблона проектирования MVVM. Там будет очень много ответов на вопросы о структуре приложения.

Материалы по теме

aepot
  • 49,560
  • Всё оказалось, ещё проще, просто создаешь новый элемент -> Класс. И он сам всё прописывает, Visual studio классная штука, причем класса задаётся как internal – artemgh Nov 09 '21 at 13:48
  • Тем не менее огромное спасибо, за MVVM. На хабре пару статей нашёл, полезно для понимания незнакомого инструмента – artemgh Nov 09 '21 at 13:49
  • @artemgh я про это и говорил, что там париться не надо об этом вопросе. А мощь WPF - да, раскрывается когда въезжаешь в смысл привязок данных и MVVM. Хотя-бы вот пример. – aepot Nov 09 '21 at 13:53
  • просто после написания кода в Sublime text и запуске его потом вручную, отвыкаешь надеяться на IDE) – artemgh Nov 09 '21 at 13:56