Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
If you’ve tried to build a BIDS project in a team build, you’ve noticed that BIDS doesn’t support MSBuild. There are a couple of workarounds for this.
- Find MSBuild extensions for the various BIDS projects. They’re out there.
- Run the build through Visual Studio—a “DevEnv” build.
I chose the second option. I downloaded the latest Community TFS Build Extensions and followed the instructions to add the activities to the workflow and the toolbox. The activity I cared about was the “VSDevEnv” activity, and that’s in the TfsBuildExtensions.Activities.dll assembly. I added it to a new tab called “Team Build Contributions” (VSDevEnv is the fourth activity):
I copied the DefaultTemplate.xaml file into a DevEnvTemplate.xaml. You can navigate down to a subworkflow called “Process > Sequence > Run on Agent > Try Compile and Test > For Each Configuration > Compile and Test > if Build Settings … > For Each Project … > Try to Compile … > Compile the Project”. In it, there is an option called “Run MSBuild for Project”. I removed the “Run MSBuild for Project” activity shown below:
and I replaced it with the “VSDevEnv” extension activity. I added the “Copy Directory” activity, since the MSBuild activity copies the binaries to a drop and the VSDevEnv activity doesn’t. You can see the new flow in the picture below:
I added the BIDS DevEnv path to my global “path” variable on the system, but you can add it to the user path on the build server. I also tagged the build server with “BIDS08” to direct the build to a machine that could support that build.
I had to set the input path—”localProject” already had the name of the file I was trying to build; set it to the project if you can rather than the solution.
The “OutputFile” is the log file from the build. I set that to outputDirectory + "\" + System.IO.Path.GetFileName(localProject) + ".log".
For “CopyDirectory”, I used BinariesDirectory as the Destination, and I used System.IO.Path.GetDirectoryName(localProject) + "\bin\" as the input directory.
At the end, I had all four of my Analysis Service build assets in the drop folder. Hopefully, I can tackle deployment in another post.