Ich habe ein paar Projekte, die auf SQL Server-Assemblys verweisen. Mit SQL Server 2005 und SQL Server 2008 führe ich derzeit 2 Projektdateien, die auf die gleichen Quelldateien verweisen, und der einzige Unterschied sind die Verweise auf die SQL Server-Assemblys.
Gibt es eine Möglichkeit, dass ich nur ein Projekt verwalten und die Referenzen in meinem Build-Skript dynamisch angeben kann?
Auf der Suche nach einer Lösung für das gleiche Problem kam ich zu der vorgeschlagenen Lösung, eine Bedingung für die ItemGroup zu haben. Dies hatte jedoch einen Nebeneffekt, da ich in den Referenzen von Visual Studio beide Referenzen sehen konnte, was sich auch auf ReSharper auswirkte.
Ich benutze schließlich ein Choose When Sonst und ich habe kein Problem mehr mit ReSharper und Visual Studio, die zwei Referenzen zeigen.
%Vor%Sie können mehr darüber in meinem Blogbeitrag lesen: ProjectReference mit Bedingung in Ihrer MSBuild-Projektdatei
Jedes MSBuild-Element ( ok fast jeder ) kann eine Bedingung damit verbunden. Was ich vorschlagen würde, ist, dass Sie die Projektdatei (die eine MSBuild-Datei selbst ist) bearbeiten und alle SQL-Serverreferenzen in eine ItemGroup einfügen, für die beispielsweise eine Bedingung gilt:
%Vor%Und noch eine ItemGroup für SQL Server 2008:
%Vor%Sie sollten einen Standardwert für die Eigenschaft SqlServerTargetEdition angeben, bevor diese Elemente deklariert werden. Dann können Sie diesen Wert in der Befehlszeile mit der Option / p überschreiben, wenn Sie msbuild.exe aufrufen .
Sayed Ibrahim Hashimi
Mein Buch: In der Microsoft Build Engine: Verwenden von MSBuild und Team Foundation Build