Jedes MSBuild Element (ok fast jeder) kann eine Condition mit ihm verbunden ist. Was würde ich vorschlagen, dass Sie die Projektdatei bearbeiten (die eine MSBuild-Datei selbst) und legen Sie alle SQL-Server-Referenzen in einer ItemGroup, die eine Bedingung für sie zum Beispiel hat:
<ItemGroup Condition="'$(SqlServerTargetEdition)'=='2005'">
<!-- SQL Server 2005 References here -->
<Reference Include="..."/>
</ItemGroup>
Und ein anderes ItemGroup für Sql 2008-Server:
<ItemGroup Condition="'$(SqlServerTargetEdition)'=='2008'">
<!-- SQL Server 2008 References here -->
<Reference Include="..."/>
</ItemGroup>
Sie sollten einen Standardwert für die Eigenschaft SqlServerTargetEdition liefern, bevor diese Elemente deklariert werden. Dann können Sie diesen Wert in der Befehlszeile überschreiben, indem Sie die Option/p beim Aufruf von msbuild.exe verwenden.
Sayed Ibrahim Hashimi
My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
Sie nicht die 2005-Baugruppen gegenüber 2008 arbeiten? –
Nein, aber die Assemblys von 2008 funktionieren gegen 2005. Das einzige Problem ist, dass ich ein paar dieser Projekte auf Codeplex release und ich mache gerne eine Version für Leute, die nur SQL 2005 haben und eins für Leute, die 2008 haben Diese Versammlungen sind in der GAC so (soweit ich weiß) kann ich nicht alle meine Abhängigkeiten neu verteilen. Und ich bin mir nicht sicher, ob ich meine Release-Größe aufblähen möchte, selbst wenn ich könnte. –