An automated MSBuild script that creates a database from scratch started failing after switching from vcvarall.bat provided by a Visual Studio 2008 install to the Visual Studio 2010 version.
For some unknown reason, the order of files listed in a ItemGroup was reversed. With files beginning with an underscore running last rather than first.
The issue was resolved by explicitly sorting the ItemGroup using a custom task from the MSBuild Extension Pack.
<!-- Have a fallback check depending on path locally or on build server --> <PropertyGroup> <TPath>$(MSBuildProjectDirectory)\ExtensionPack\MSBuild.ExtensionPack.tasks</TPath> <TPath Condition="Exists('C:\Program Files (x86)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks')">C:\Program Files (x86)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks</TPath> </PropertyGroup> <Import Project="$(TPath)"/> <!-- ... --> <Target Name="MainData"> <Message Text="Inserting Data Main (Main Data)" /> <!-- Sort an ItemGroup alphabetically --> <MSBuild.ExtensionPack.Framework.MsBuildHelper TaskAction="Sort" InputItems1="@(MainDataFiles)"> <Output TaskParameter="OutputItems" ItemName="sorted"/> </MSBuild.ExtensionPack.Framework.MsBuildHelper> <Message Text="Sorted Items: %(sorted.Identity)"/> <Exec Command="$(SqlCmdPrefix) -i %(sorted.Identity)" /> </Target>
See Also: