Инкрементные сборки могут помочь вам с вашей единственной монолитной DLL.В 2.0 они были представлены, но в основном они были направлены на обнаружение изменений зависимостей - то, что Visual Studio уже делает для вас в вашем случае.
Однако , из Что нового в.NET Core 2.1 :
Использование долговременных серверов сборки SDK, которые представляют собой процессы, охватывающие отдельные вызовы сборки dotnet.Они исключают необходимость JIT-компиляции больших блоков кода каждый раз при запуске сборки dotnet.
В настоящее время я не могу точно проверить, что это может означать для большого проекта и имеющего небольшие площади.изменение изолированного кода, но я бы посоветовал поэкспериментировать с ним.
Обновление , я пытался проверить, что именно это может означать, но, к сожалению, у меня нет проекта на 700 тыс. строк.Я использовал этот пример проекта MS и выполнил 2 копии - одна соединилась в одну DLL, а другая разбилась.Каждый тест, который я проводил, пример «монолитного» комбинированного проекта выполнялся быстрее, но я предполагаю, что это неверные результаты, поскольку объединенный проект вряд ли можно считать «монолитным».
Одна интересная вещь, которую я обнаружил в этом образце «монолит»: внесла ли я небольшое изменение в представление или радикальные изменения в проекте, я никогда не видела разницы между свежим временем компиляции.Это заставляет меня задаться вопросом, что именно кэширует этот новый сборочный сервер с JIT.Возможно, опять же, это только потому, что мой «монолит» невелик.
В конце я не могу найти доказательств того, что ваш действительно монолитный проект обеспечит более быструю сборку во время изменений в .NET Core 2.1.Я могу увидеть доказательство того, что разделение его на несколько функциональных проектов даст преимущества.В итоге, проекты, которые не изменились, не будут перекомпилированы.
В конце концов, в вашем случае у вас есть монолитная DLL, и это является основной частью проблемы.Все остальные вещи, которые вы и другие предлагаете в комментариях, значительно увеличат время сборки, поскольку если некоторые ключевые области кода, которые изменяются нечасто, могут быть разбиты на другие проекты, они не будут перестраиваться при каждой компиляции.Если они изменяют очень нечасто, их даже можно поместить в пакет nuget и разместить на частном сервере nuget.Тогда они не будут скомпилированы - даже в новых разработках.
Надеюсь, это поможет!