Здравствуйте, Arsen.Shnurkov, Вы писали:
V>> Все вменяемые библиотеки так устроены.
AS>Да что вы говорите! Покажите мне это на примере Roslyn:
AS>https://github.com/dotnet/roslyn-project-system/issues/462
В чём вообще вопрос? Как ковыряться в xml? Ну способов 10 разных точно есть. По ссылке какая-то тривиальная ерунда, XSLT задействуй, если файлы переписывать хочется. А в рамках идеологии MSBuild вообще решается через переменные (<PropertyGroup/>) и условные выражения в таргетах — подставляешь в нужных местах переменные и меняешь их значения в зависимости от каких-то условий.
Вот пример из CSPROJ — генерация разных подключений к бд в зависимости от выбранной конфигурации (переменная Configuration):
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterBuild" Condition="Exists('ConnectionStrings.$(Configuration).config')">
<!--Generate transformed config in the project directory, because Web apps pick files from there-->
<TransformXml Source="ConnectionStrings.config" Destination="ConnectionStrings.config" Transform="ConnectionStrings.$(Configuration).config" />
</Target>
Ты так же можешь сделать файл PROJ и трансформировать CSPROJ по шаблону.
https://msdn.microsoft.com/en-us/library/dd465326(v=vs.110).aspx
А архитектура при чём?