Одним из подходов может быть условная ссылка на ваши библиотеки с использованием атрибута Condition каждой сборки Ссылочный элемент (Python, MPI и т. Д.).
Это может отделить ваши библиотеки от свойств конфигурации и платформы и позволить вам создавать их по умолчанию или условно, используя свойства MSBuild.
Итак, в вашем csproj:
<Reference Include="YourPythonLibrary"
Condition="$(BuildType) == '' Or $(BuildType) == 'TypeA'" />
<Reference Include="YourMpiLibrary"
Condition="$(BuildType) == 'TypeA' Or $(BuildType) == 'TypeB'" />
Это включает Python по умолчанию и MPI, только если установлен правильный тип сборки. Не имеет значения, какая конфигурация или платформа установлена, и вы можете настроить логическую логику так, чтобы она подходила каждой библиотеке для каждого типа сборки.
MSBuild /p:BuildType=TypeA
MSBuild /p:BuildType=TypeB
Было бы неплохо использовать некоторую форму побитовой операции с условием, но я не уверен, что это возможно в MSBuild?
Примечание: нет необходимости в элементе Reference, если он просто включен как Content, этот подход все равно будет работать.