Я работаю над кроссплатформенным приложением, использующим платформу Uno. Приложение состоит из 5 стандартных головных проектов для моего приложения и десятка связанных проектов кроссплатформенных библиотек (проекты Uno-платформенных кроссплатформенных библиотек, MSBuild.Sdk.Extras, VStudio 2019). В указанных библиотеках проектов есть многоцелевые платформы, указанные как: netstandard2.0; xamarinios10; xamarinmac20; MonoAndroid90; monoandroid10.0. Структура решения выглядит так:
- SolutionApp
- App.Droid
- App.iOS
- App.macOS
- App.UWP
- App.Wasm
- App.Shared
- MultiTargetLibrary1
...
- MultiTargetLibraryN
Проблема в том, что каждый раз, когда я перестраиваю какой-либо из проектов головного приложения, VStudio перестраивает связанные проекты для всех доступных целевых фреймворков.
Как избежать сборник ненужных целевых платформ? Как ссылочный проект может узнать, какой головной проект вызвал сборку? Есть ли возможность передать, какая именно целевая структура необходима для построения ссылочного проекта из VStudio?
Пример: я решил перестроить App. iOS, и это вызвало перестройку ссылочных проектов. Я хочу, чтобы были построены проекты только с TargetFramework xamarinios10.
Если есть только несколько целевых фреймворков или проектов, компиляция не медленная, но с увеличением количества проектов, на которые ссылаются, время чрезвычайно возрастает.
Как я получил из справочника msbuild: VStudio вызывает msbuild для каждого проекта в решении отдельно, поэтому msbuild не знает, какой головной проект инициировал сборку указанного проекта и какая целевая платформа требуется.