Подтвердить что ты не робот

Насколько важна глобальная папка global.json и src?

В VS 2015, когда вы создаете новое приложение MVC 6.0, используя этот подход:

File-->New-->Project-->ASP.NET Web Application-->ASP.NET 5 Preview Templates

В результате на диске создается следующая файловая структура:

  • Артефакты
  • ЦСИ
  • MyProject.sln
  • global.json

Вместо этого, если я решил сначала создать пустое решение следующим образом:

 File-->New-->Project-->Other Project Types-->Visual Studio Solutions-->Blank Solution

И начните добавлять в это решение новый проект веб-приложения ASP.NET; вы получаете файловую структуру, в которой не имеет файла global.json и нет src.

Согласно документации , файл global.json используется для настройки решения в целом. Он включает только два раздела, проекты и sdk по умолчанию.

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

Свойство sdk указывает версию DNX (.NET Execution Environment), которую Visual Studio будет использовать при открытии решения. Его набор здесь, а не в project.json, чтобы избежать сценариев, в которых различные проекты в рамках решения нацелены на разные версии SDK.

Вопрос 1)

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

Не имеет ли файл global.json влияет на поведение приложений в любой форме или форме? Например, когда я развертываю или взаимодействую с артефактами сборки?

Вопрос 2)

Если это имеет значение, тогда я должен вручную создать этот global.json файл?

Вопрос 3)

На момент написания статьи, существует ли рекомендуемый подход для создания многоуровневого приложения в ASP.NET 5?

Должен ли я сначала создать проект MVC и начать добавлять библиотеки классов в проект?

или

Должен ли я сначала начать с создания пустого решения и начать добавлять библиотеки классов и веб-приложения к решению (зная, что у меня не будет файла global.json или папки src)?

4b9b3361

Ответ 1

Как вы уже отмечали, это, по-видимому, новый способ создания решений при настройке ASP.NET 5. Файл global.json указывает некоторые параметры уровня решения. В частности, он определяет настройки времени исполнения DNX.

Я видел два подхода к структуре папок src/test. Если вы посмотрите на то, что делает команда MVC, они включают в себя папки src/test в корне репозитория. Во многих проектах, например, в Github есть каталог src в корне. Таким образом, пока вы в порядке с вашими файлами global.json и решения в корне вашего проекта, он, похоже, хорошо согласуется с существующими практиками.

Если вы посмотрите, что делает команда .NET с .NET 5 Core Framework, вы увидите аналогичную модель, хотя без файла global.json. Многие из их библиотек имеют подкаталоги src и tests.

Я собираюсь попытаться сфокусировать свои проекты после того, что команда MVC делает пока, пока я не получу лучшее представление о .NET 5, DNX и остальном. Он накладывает определенную структуру на ваши проекты, но тогда также были VS 2013 и .NET 4.5.

Ответ 2

Папки src, test и т.д. позволяют группировать проекты по типу. Это помогает поддерживать поддерживаемое решение при большом количестве проектов. Ниже приведен пример различных типов проектов.

В Основные принципы разработки ASP.NET: "По умолчанию ссылки на проект-проект должны быть папками для совместного использования. Использование global.json файл позволяет решить задачу указать нестандартные местоположения для поиска ссылок."

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

Ответ 3

1) Да, для меня у меня также была эта проблема, и я начал с чистого решения. Тогда у моих проектов были проблемы, связанные друг с другом.

2) Для меня это не сработало без global.json. Вы также должны убедиться, что файл решения правильно указывает на все, например global.json. Проекты не строились и не нашли друг друга для меня иначе.

3) Чтобы получить все работоспособность, я сначала создал проект ядра mvc, чтобы получить файл global.json. Затем я переименовал папку scr в applicationname.web. Обязательно измените файл решения соответствующим образом, чтобы он не указывал неправильно. Также вы должны обновить файл project.json. Таким образом, все, что я хотел, как пустое решение, как вы, я создал проект по умолчанию, а затем изменил его так, как я этого хотел, что сработало для меня.

Я создам свое текущее приложение с помощью Onion Architeture в качестве ориентира. Я не вижу проблемы с этим ядром. Это также означает, что я буду строить IoC в другом проекте (возможно, с именем infrastructure.IoC), чтобы мой веб-проект не содержал ссылок на проекты, содержащие реализации интерфейсов, о которых веб не должен знать.

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