Chaque élément MSBuild (ok presque tous les) peut avoir un Condition associé. Ce que je suggère est que vous modifiez le fichier de projet (qui est un fichier lui-même MSBuild) et placez toutes les références de serveur SQL dans un ItemGroup qui a une condition sur elle par exemple:
<ItemGroup Condition="'$(SqlServerTargetEdition)'=='2005'">
<!-- SQL Server 2005 References here -->
<Reference Include="..."/>
</ItemGroup>
Et une autre ItemGroup pour Sql serveur 2008:
<ItemGroup Condition="'$(SqlServerTargetEdition)'=='2008'">
<!-- SQL Server 2008 References here -->
<Reference Include="..."/>
</ItemGroup>
Vous devez fournir une valeur par défaut de la propriété SqlServerTargetEdition avant que ces articles sont déclarés. Ensuite, sur la ligne de commande, vous pouvez remplacer cette valeur à l'aide du commutateur/p lors de l'appel de msbuild.exe.
Sayed Ibrahim Hashimi
Mon livre: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
Ne pas les assemblées de 2005 travaillent par rapport à 2008? –
Non, mais les assemblées de 2008 fonctionnent contre 2005. Le seul problème est que je lance un couple de ces projets sur codeplex et j'aime faire une version pour les personnes qui ont seulement SQL 2005 et une pour les personnes qui ont 2008. Certains de ces assemblées sont dans le GAC donc (pour autant que je sache) je ne peux pas redistribuer toutes mes dépendances. Et je ne suis pas sûr d'avoir envie de gonfler ma taille de sortie même si je le pouvais. –