<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Development in a Blink &#187; MSBuild</title>
	<atom:link href="http://www.dougfinke.com/blog/index.php/category/msbuild/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dougfinke.com/blog</link>
	<description>Researching the optimal; implementing the practical</description>
	<lastBuildDate>Fri, 03 May 2013 19:47:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How PowerShell can Automate Deployment to Multiple Windows Azure Environments</title>
		<link>http://www.dougfinke.com/blog/index.php/2011/02/25/how-powershell-can-automate-deployment-to-multiple-windows-azure-environments/</link>
		<comments>http://www.dougfinke.com/blog/index.php/2011/02/25/how-powershell-can-automate-deployment-to-multiple-windows-azure-environments/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 14:04:56 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://www.dougfinke.com/blog/?p=1185</guid>
		<description><![CDATA[The two blog posts below are providing insight into how to create an automated delivery pipeline to the Cloud, Microsoft Azure. I believe the same fundamentals can and ought be applied to the software development life cycle whether you have a hybrid or Enterprise model. The first post is the updated SDK and PowerShell cmdlets [...]]]></description>
				<content:encoded><![CDATA[<p>The two blog posts below are providing insight into how to create an automated delivery pipeline to the Cloud, <a href="http://www.microsoft.com/en-us/cloud/developer/default.aspx?CR_CC=200028940&amp;WT.srch=1&amp;WT.mc_id=85C588D4-A353-4E3D-8824-823A9551AA51&amp;CR_SCC=200028940">Microsoft Azure</a>. I believe the same fundamentals can and ought be applied to the software development life cycle whether you have a hybrid or Enterprise model.</p>
<p>The first post is the updated SDK and PowerShell cmdlets for MSBuild and Azure.</p>
<p>The second is a walk through showing how to automatically build and deploy your Windows Azure applications to  multiple accounts and use configuration transforms to modify your  Service Definition and Service Configuration files.</p>
<ul>
<li>Scott Densmore <a href="http://goo.gl/Fm5JQ">- Another Update for the Deployment scripts for Windows Azure </a></li>
<li>Tom Hollander &#8211; <a href="http://goo.gl/h0tNg">Using MSBuild to deploy to multiple Windows Azure environments </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2011/02/25/how-powershell-can-automate-deployment-to-multiple-windows-azure-environments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Note to self: How to programmatically get the MSBuild path in PowerShell</title>
		<link>http://www.dougfinke.com/blog/index.php/2010/12/01/note-to-self-how-to-programmatically-get-the-msbuild-path-in-powershell/</link>
		<comments>http://www.dougfinke.com/blog/index.php/2010/12/01/note-to-self-how-to-programmatically-get-the-msbuild-path-in-powershell/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 02:01:14 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://www.dougfinke.com/blog/index.php/2010/12/01/note-to-self-how-to-programmatically-get-the-msbuild-path-in-powershell/</guid>
		<description><![CDATA[Other ways I’ve seen have been to get the directory from the registry. I prefer this approach. Function Get-MSBuild { $lib = [System.Runtime.InteropServices.RuntimeEnvironment] $rtd = $lib::GetRuntimeDirectory() Join-Path $rtd msbuild.exe } [Updated 9/12/2012 based on Matt's comment] This gets the directory for the latest installed .NET runtime This gets the directory for the runtime environment under [...]]]></description>
				<content:encoded><![CDATA[<p>Other ways I’ve seen have been to get the directory from the registry. I prefer this approach.</p>
<pre class="PowerShellColorizedScript"><span style="color: #00008b;">Function</span> <span style="color: #8a2be2;">Get-MSBuild</span> <span style="color: #000000;">{</span>
    <span style="color: #ff4500;">$lib</span> <span style="color: #a9a9a9;">=</span> <span style="color: #008080;">[System.Runtime.InteropServices.RuntimeEnvironment]</span>
    <span style="color: #ff4500;">$rtd</span> <span style="color: #a9a9a9;">=</span> <span style="color: #ff4500;">$lib</span><span style="color: #a9a9a9;">::</span><span style="color: #000000;">GetRuntimeDirectory</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span>
    <span style="color: #0000ff;">Join-Path</span> <span style="color: #ff4500;">$rtd</span> <span style="color: #8a2be2;">msbuild.exe</span>
<span style="color: #000000;">}</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: #000000;">[Updated 9/12/2012 based on Matt's comment]</span></pre>
<p><span style="text-decoration: line-through;">This gets the directory for the latest installed .NET runtime </span>This gets the directory for the runtime environment under which Powershell is running and joins it with msbuild.exe.</p>
<h3>Usage</h3>
<pre class="PowerShellColorizedScript" style="width: 539px; height: 184px;"><span style="color: #a9a9a9;">&amp;</span> <span style="color: #000000;">(</span><span style="color: #0000ff;">Get-MSBuild</span><span style="color: #000000;">)</span>            

<span style="color: #8b0000;">Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

MSBUILD : error MSB1003: Specify a project or solution file.
The current working directory does not contain a project or solution file.</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2010/12/01/note-to-self-how-to-programmatically-get-the-msbuild-path-in-powershell/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Build Visual Studio Projects on Remote Boxes Using PowerShell and MSBuild</title>
		<link>http://www.dougfinke.com/blog/index.php/2010/10/20/build-visual-studio-projects-on-remote-boxes-using-powershell-and-msbuild/</link>
		<comments>http://www.dougfinke.com/blog/index.php/2010/10/20/build-visual-studio-projects-on-remote-boxes-using-powershell-and-msbuild/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 00:20:22 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://www.dougfinke.com/blog/index.php/2010/10/20/build-visual-studio-projects-on-remote-boxes-using-powershell-and-msbuild/</guid>
		<description><![CDATA[We are setting up a new Continuous Build server and as we tweak parameters, things happen. For example, false positives. The build worked on the server but fails locally. As a sanity check and major time saver, this script runs MSBuild on a remote computer. You specify the name of the remote box and the [...]]]></description>
				<content:encoded><![CDATA[</p>
<p>We are setting up a new <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous Build</a> server and as we tweak parameters, things happen. For example, false positives. The build worked on the server but fails locally. </p>
<p>As a sanity check and major time saver, this script runs MSBuild on a remote computer. You specify the name of the remote box and the Visual Studio solution path and filename. </p>
<pre style="width: 362px; height: 21px" class="PowerShellColorizedScript"><span style="color: #0000ff">Invoke-RemoteMSBuild</span> <span style="color: #8a2be2">ServerX</span> <span style="color: #8a2be2">G:\Build\Test.sln</span></pre>
<h3>No Fuss, No Muss</h3>
<p>You run this script on your box, the MSBuild runs remotely. The MSBuild output is returned to your local box. No remoting in, no login, simple and easy.</p>
<pre style="width: 559px; height: 282px" class="PowerShellColorizedScript"><span style="color: #00008b">Function</span> <span style="color: #8a2be2">Invoke-RemoteMSBuild</span> <span style="color: #000000">{</span>            
    <span style="color: #00008b">param</span> <span style="color: #000000">(</span>            
        <span style="color: #ff4500">$computerName</span> <span style="color: #a9a9a9">,</span>            
        <span style="color: #ff4500">$vsSolution</span> <span style="color: #a9a9a9">=</span> <span style="color: #000000">$(</span><span style="color: #00008b">throw</span> <span style="color: #8b0000">&quot;Please specify the solution file&quot;</span><span style="color: #000000">)</span>            
    <span style="color: #000000">)</span>            
            
    <span style="color: #0000ff">Invoke-Command</span> <span style="color: #000080">-ComputerName</span> <span style="color: #ff4500">$computerName</span> <span style="color: #000000">{</span>            
        <span style="color: #00008b">param</span> <span style="color: #000000">(</span><span style="color: #ff4500">$vsSolution</span><span style="color: #000000">)</span>            
            
        <span style="color: #ff4500">$msbuildpath</span> <span style="color: #a9a9a9">=</span> <span style="color: #8b0000">&quot;$($env:windir)\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe&quot;</span>            
        <span style="color: #a9a9a9">&amp;</span> <span style="color: #ff4500">$msbuildpath</span> <span style="color: #ff4500">$vsSolution</span>            
            
    <span style="color: #000000">}</span> <span style="color: #000080">-ArgumentList</span> <span style="color: #ff4500">$vsSolution</span>            
<span style="color: #000000">}</span></pre>
<p>You need to have PowerShell installed on both boxes, run Enable-PSRemoting on both boxes and you need to be in the admin group on the server.</p>
<p>Thanks to colleague <a href="http://blog.lab49.com/archives/2650">Jason Dolinger</a> who is quickly ramping up on PowerShell and asked if this could be done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2010/10/20/build-visual-studio-projects-on-remote-boxes-using-powershell-and-msbuild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PowerShell and MSBuild Extensible Task Factories</title>
		<link>http://www.dougfinke.com/blog/index.php/2010/02/20/powershell-and-msbuild-extensible-task-factories/</link>
		<comments>http://www.dougfinke.com/blog/index.php/2010/02/20/powershell-and-msbuild-extensible-task-factories/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 13:30:36 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Task Factories]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/index.php/2010/02/20/powershell-and-msbuild-extensible-task-factories/</guid>
		<description><![CDATA[One of the cool new features of MSBuild 4.0 is the extensible task factory. Writing your own task factory will allow you to write inline tasks in Perl, Python, or in this case&#8230; Windows PowerShell. Blog post MSBuild Task Factories: guest starring Windows Powershell. Sample task factory on MSDN Code Gallery MSBuild Windows PowerShell Task [...]]]></description>
				<content:encoded><![CDATA[<p>One of the cool new features of MSBuild 4.0 is the extensible task factory. Writing your own task factory will allow you to write inline tasks in Perl, Python, or in this case&hellip; Windows PowerShell. </p>
<p>Blog post <a href="http://blogs.msdn.com/visualstudio/archive/2010/02/20/msbuild-task-factories-guest-starring-windows-powershell.aspx?utm_source=twitterfeed&amp;utm_medium=twitter">MSBuild Task Factories: guest starring Windows Powershell</a>. </p>
<p>Sample task factory on MSDN Code Gallery <a href="http://code.msdn.microsoft.com/PowershellFactory/Release/ProjectReleases.aspx?ReleaseId=3926">MSBuild Windows PowerShell Task Factory</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2010/02/20/powershell-and-msbuild-extensible-task-factories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
