Подарки от программис'тов
Тут скорее вопрос в том, как целую кучу проблем решают те, кому требуется иметь проект/библиотеку до того как требования к этому проекту/библиотеке были сформулированы клиентом... а клиент со своими хотелками определится после окончания реализации текущего проекта...
Тут тоже есть подходы. Например, сначала решить проблему клиента. Потом убедить клиента, что решил именно ту проблему, которая у него была. А потом убедить его, что она у него таки была. Довольно распространённый бизнес.
Создать программисту побольше проблем на ровном месте?
Смысл в том, чтобы максимально изолировать команды друг от друга.
Таким образом получается своебразный конструктор, в котором есть архитектура. Простой прирер - слоеная архитектура. Когда нижний слой ничего не должен знать о верхнем. При этом верхний слой работает с абстракциями.
Для разработки компонент более высокого уровня не нужен код компонент нижнего уровня. При этом если ты работаешь над уже существующим проектом и тебе надо добавить новый референц, то это красная лампочка, которая загорается у архитектора. И уже архитектор принимает решение, нужен ли этот референц.
Ну а сборка продукта - это просто копирование уже скомпилированных DLL'ек.
Например, сначала
-----
Ты, как всегда, уперся в свое, ограниченное недостатком опыта, видение проблемы и ничто тебя не подвинет изучить проблему и способы решения... пока, по крайней мере...
Я, например, уже лет 20-ть пишу в условиях, когда сначала требуется написать решение, а потом добавят клиентов... часто - без меня... и без исходников...
Вы когда-нибудь видели такую файловую структуру проекта, что в директории с файлами самого проекта (csproj, sln и его остальными файлами и директориями) находится директория, в которой лежит другой проект со своими файлами? Т.е. примерно так
Директория проекта 1
|-файлы и директории типа bin и прочие элементы проекта 1
|-1.csproj
|-1.sln
|-Директория проекта 2
|--файлы и директории типа bin и прочие элементы проекта 2
|--2.csproj
|--2.sln
Что за бред, что за матрёшка? Удаляя проект 1, удаляешь и все вложенные.
В Студии в окне Solution Explorer можно ориентироваться, только если включить вид "решения" (пиктограмма "Switch between solutions and available views"). Тогда эти вложенные проеты идут обычным списком в одной иерархии. Если включить "виды" (это обычная проводниковая файловая структура, как я понимаю), то хрен догадаешься, что в папках одного проекта ещё другие намешаны.
Вы когда-нибудь видели
-----
Я таки видел столько разных, что удивить меня чем-нибудь будет сложно...
Солюшник... 100+ проектов.... 100+проектов тестов...
Все это в сложной иерархии... причем проекты убраны на два уровня вниз...
биновый фолдер - на уровне солюшника... шаренные файлы - уровнем ниже...
Все нормально...
Я не понмю, как Студия отслеживает принадлежность файлов к проекту. На каждый файл хранится где-то полный путь и его привязка к конкретному проекту? Тогда, конечно, можно вообще всё проекты и их файлы в кашумалу смешать. Студии-то пофиг - она распарсит каждый и внутри себя всё структурированно представит. А вот в файловой структуре разбираться (что приходится делать не так уж редко) - лучше убиться. А ещё лучше убить того, кто это сделал.
как Студия отслеживает
------
Прописано в процах и таргетсах.
Если пороешься в архиве, то можешь найти мой вопросик про книжку в которой это все описано...
Ну это... читать-изучать придется самому...
Ах, да... там не все - что для процов и таргетсов слишком сложно можно оформить в виде тасков...
Но это опять надо кусок старья изучать...
Это я не туда глянул поначалу, оказывается. Открыл сейчас csproj от проекта на .NET Framework - там действительно все пути файлов хранятся. Открыл на .NET Standard - почти пустой файл. Где тут чего хранится?
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.1</TargetFramework> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath></OutputPath> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\CommonResources\CommonResources.csproj" /> </ItemGroup> <ItemGroup> <CopyFiles Include="$(TargetDir)*.dll" /> </ItemGroup> <Target Name="CopyFiles" AfterTargets="Build"> <Copy SourceFiles="@(CopyFiles)" DestinationFolder="" /> </Target> </Project>