Самый простой подход в моем опыте - использовать NAnt для вызова MSBuild и заставить MSBuild создать сам файл решения. См. Мой файл сборки буферов протокола в качестве примера.
Я использую NAntContrib , который имеет задачу msbuild
:
<property name="nantcontrib-dir"
value="${path::combine(nant::get-base-directory(), '../../NAntContrib')}"
overwrite="false" />
<loadtasks assembly=
"${path::combine(nantcontrib-dir, 'bin/NAnt.Contrib.Tasks.dll')}"
/>
...
<target name="build"
description="Builds all C# code">
<msbuild project="${src}/ProtocolBuffers.sln">
<property name="Configuration"
value="${build-configuration}" />
</msbuild>
</target>