<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>MSBuild Team Blog : Tools</title><link>http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx</link><description>Tags: Tools</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>More tools...</title><link>http://blogs.msdn.com/msbuild/archive/2007/12/03/more-tools.aspx</link><pubDate>Mon, 03 Dec 2007 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6646753</guid><dc:creator>msbuild</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/6646753.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=6646753</wfw:commentRss><description>&lt;P&gt;Two new MSBuild community tools to check out!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Eugene from &lt;A class="" href="http://www.attrice.info/msbuild/" mce_href="http://www.attrice.info/msbuild/"&gt;Attrice&lt;/A&gt; has&amp;nbsp;&lt;A class="" href="http://blogs.microsoft.co.il/blogs/tfsidekicks/archive/2007/12/03/visualization-in-msbuild-sidekick-v2.aspx" mce_href="http://blogs.microsoft.co.il/blogs/tfsidekicks/archive/2007/12/03/visualization-in-msbuild-sidekick-v2.aspx"&gt;blogged about &lt;/A&gt;the&amp;nbsp;Visualization support in the new edition of MSBuild SideKick. (There's also another&amp;nbsp;pretty visualizer on &lt;A class="" href="http://www.codeplex.com/dependencyvisualizer" mce_href="http://www.codeplex.com/dependencyvisualizer"&gt;CodePlex&lt;/A&gt;.)&lt;/P&gt;
&lt;P&gt;Partho pointed me at &lt;A class="" href="http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx" mce_href="http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx"&gt;a debugger&lt;/A&gt; he's created. It's &lt;A class="" href="http://www.codeplex.com/msbdbg" mce_href="http://www.codeplex.com/msbdbg"&gt;on CodePlex&lt;/A&gt; too, which means you can help improve it.&amp;nbsp;It runs as a logger, taking advantage of the rich event information that loggers receive, and the fact that loggers currently run synchronously with the build. (This will likely change in future versions of MSBuild.) Debuggers built on the logging infrastructure are about as good as you can get until we have debugger support built into MSBuild - but for many people that can be&amp;nbsp;a lot better than no debugger.&lt;/P&gt;
&lt;P&gt;Nice work.&lt;/P&gt;
&lt;P&gt;Dan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6646753" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Dan+Moseley/default.aspx">Dan Moseley</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/msbuild/default.aspx">msbuild</category></item><item><title>What are Targets, Tasks, and Tools?</title><link>http://blogs.msdn.com/msbuild/archive/2007/11/14/what-are-targets-tasks-and-tools.aspx</link><pubDate>Wed, 14 Nov 2007 23:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6225415</guid><dc:creator>msbuild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/6225415.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=6225415</wfw:commentRss><description>&lt;P&gt;I've heard these confused in the context of MSBuild, so let's talk a little about what they are:&lt;/P&gt;
&lt;P&gt;*&amp;nbsp;A TARGET is a grouping of tasks (often 1) designed to do a particular job. For example, a Link target would be designed to produce a final binary from object files. Targets can declare other targets that they depend on, and MSBuild will make sure those are run first. At present targets are the unit of incremental build: declaring Inputs and Outputs on a target will cause MSBuild to compare their timestamps and skip the target if the inputs are up to date. Because a target is the unit of build, it is the entity that other parts of the build depend on or invoke (via CallTarget or the MSBuild task from another project). The implementation of a target can be modified later, so long as it's "contract" ("consume X and Y properties and list of object files O to produce binary Z") is preserved. A future version will likely have an extensibility model for up-to-date checking, and that will likely plug in at the target level. Once a target has run once in the context of a project,&amp;nbsp;global properties, toolsversion,&amp;nbsp;and build, it will be immediately skipped next time it is invoked, without even checking timestamps. When you write a target, always check that it skips properly in the incremental build case. MSBuild logs information about targets during the build, and any extra logging you want has to happen from a task, especially the &amp;lt;Message&amp;gt;, &amp;lt;Warning&amp;gt;, and &amp;lt;Error&amp;gt; tasks. Targets can be batched, although this is rarely done. &lt;/P&gt;
&lt;P&gt;A TASK is a reuseable implementation of some build action. In this case the only task in the Link target would likely be the task named Link. It is fed parameters, including the files to link, does the link, and the build proceeds. At present tasks must be .NET assemblies deriving from the interface Microsoft.Build.Framework.ITask. Tasks can consume and emit items and properties. By design, they have no other insight into the state of the build. They should not discover files on disk - this makes them opaque and less reuseable. PropertyGroup and ItemGroup inside targets can be thought of as tasks, but they have special syntax and powers. If your target is starting to get too "clever", write a task. We hear loud and clear that not everybody wants to write and compile code to create a task, and we'll address this future. Tasks can be batched, and this is commonly done either to force a task to run once for each source file (something like Sources="'%(Compile.Identity)'") or to filter out certain input files, by filtering in the condition on metadata on source items.&lt;/P&gt;
&lt;P&gt;A TOOL is an implementation detail of some tasks. A Link task may happen to currently wrap a tool named link.exe and it may happen that the parameters on this Link task pretty much wrap 1:1 with the command line switches on this tool named link.exe. However those are implementation details. One day the link task could be modified to load a "link.dll". Or the owners of link.exe could flip the /clr switch in order to implement ITask themselves. Tasks that wrap tools will want to derive from the ready-made abstract class named Microsoft.Build.Utilities.ToolTask, which provides much of the functionality they will need. Many tasks do not wrap tools. [ Aside: For example, during development of MSBuild v1, we initially implemented resource generation by wrapping resgen.exe. However a key scenario was to build a typical VB or C# project without even having the .NET SDK installed, but resgen.exe did not ship in the .NET Framework and we couldn't persuade them to move it. So we wrote our own resource generation task in code, called GenerateResource. (Resgen.exe is just a thin wrapper over BCL APIs anyway.) A similar situation exists for al.exe, but we did not write a task to do that without the tool: al.exe is some pretty hairy code. This is why you need VS or the .NET SDK installed to build projects with satellite assemblies. But I digress.]&lt;/P&gt;
&lt;P&gt;Unlike makefiles, the inputs and outputs on a Target are not necessarily what the “build action”, ie the task, operates on. The task operates only on the parameters it is given. Typically however the Inputs on the Target would be among the inputs passed to the task, but this is not necessarily true. For example the Link target’s Inputs might include $(MSBuildProjectFullPath), so that the target is forced to run if the project file itself has been edited - yet the Link task would not be passed the project file.&lt;/P&gt;
&lt;P&gt;Dan&lt;BR&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6225415" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Dan+Moseley/default.aspx">Dan Moseley</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/msbuild/default.aspx">msbuild</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/tasks/default.aspx">tasks</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/targets/default.aspx">targets</category></item><item><title>Beta 2 of the MSBuild Toolkit for .NET Framework v1.1  is Out!</title><link>http://blogs.msdn.com/msbuild/archive/2006/03/25/560471.aspx</link><pubDate>Sat, 25 Mar 2006 02:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:560471</guid><dc:creator>msbuild</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/560471.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=560471</wfw:commentRss><description>&lt;P&gt;Craig just announced over on his blog that &lt;A HREF="/clichten/archive/2006/03/24/560201.aspx"&gt;Beta 2 is available&lt;/A&gt;. New features in this release include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Support for the ResolveComReference task! &lt;/LI&gt;
&lt;LI&gt;Redirecting the LC task to target .NET 1.1 &lt;/LI&gt;
&lt;LI&gt;Defining a FX1_1 constant to let you exclude .NET 2.0 specific code &lt;/LI&gt;
&lt;LI&gt;Providing a BaseFX1_1OutputPath property for replacing the default 'bin\FX1_1' base path. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;[ Author: Neil Enns ]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=560471" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Neil+Enns/default.aspx">Neil Enns</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category></item><item><title>MSBuild Extras - Toolkit for .NET 1.1 (beta 1) is Out!</title><link>http://blogs.msdn.com/msbuild/archive/2006/02/10/529838.aspx</link><pubDate>Sat, 11 Feb 2006 00:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:529838</guid><dc:creator>msbuild</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/529838.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=529838</wfw:commentRss><description>&lt;P&gt;The folks in our customer experience team have posted the first public beta of &lt;A href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=9ac94da5-8e5a-4a33-beda-9b8d00970371"&gt;MSBuild Extras - Toolkit for .NET 1.1&lt;/A&gt; (the project formerly known as "MSBee"). If you're interested in building .NET 1.1 applications using MSBuild this is the tool for you! Give it a spin and be sure to &lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=291&amp;amp;SiteID=1"&gt;send them feedback&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;[ Author: Neil Enns ]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=529838" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Neil+Enns/default.aspx">Neil Enns</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category></item><item><title>AssemblyInfoTask Version 1.0.51130.0 is now available!</title><link>http://blogs.msdn.com/msbuild/archive/2005/12/07/assemblyinfotask-version-1-0-51130-0-is-now-available.aspx</link><pubDate>Wed, 07 Dec 2005 22:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:501180</guid><dc:creator>msbuild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/501180.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=501180</wfw:commentRss><description>&lt;P&gt;I just posted an updated version of the AssemblyInfoTask and its source code to our &lt;A class="" href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5C455590-332C-433B-A648-E368B9515580" mce_href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5C455590-332C-433B-A648-E368B9515580"&gt;GotDotNet user sample page&lt;/A&gt;. This new release fixes support for Visual J# projects, includes an updated installer that installs the task into the Global Assembly Cache, support for installing as a non-administrator, a few bug fixes to the help documentation, and full code-signing and strong name for the compiled assembly.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;[ Author: Neil Enns ]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=501180" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Neil+Enns/default.aspx">Neil Enns</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/AssemblyVersionInfo/default.aspx">AssemblyVersionInfo</category></item><item><title>How To: Update Assembly Version Numbers with MSBuild</title><link>http://blogs.msdn.com/msbuild/archive/2005/11/11/how-to-update-assembly-version-numbers-with-msbuild.aspx</link><pubDate>Sat, 12 Nov 2005 01:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:491947</guid><dc:creator>msbuild</dc:creator><slash:comments>60</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/491947.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=491947</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;UPDATE: For information on the "Y7K" or "2007" issue, see&amp;nbsp;&lt;/STRONG&gt;&lt;A class="" href="http://blogs.msdn.com/msbuild/archive/2007/01/03/fixing-invalid-version-number-problems-with-the-assemblyinfotask.aspx" mce_href="http://blogs.msdn.com/msbuild/archive/2007/01/03/fixing-invalid-version-number-problems-with-the-assemblyinfotask.aspx"&gt;&lt;STRONG&gt;our new blog entry&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;.&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One of our most frequently asked questions is: "How do update my assembly version numbers at build time?". Unfortunately our answer has been "you can't". Until today, that is.&lt;/P&gt;
&lt;P&gt;I just posted a new task, &lt;A class="" href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5C455590-332C-433B-A648-E368B9515580" mce_href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5C455590-332C-433B-A648-E368B9515580"&gt;AssemblyInfoTask&lt;/A&gt;, at GotDotNet. It provides complete support for a wide variety of version number styles, from a fixed number to numbers that change daily to numbers that increment on every build. It also supports setting other properties such as AssemblyTitle, AssemblyCopyright, etc.&lt;/P&gt;
&lt;P&gt;Even better, we've posted the complete source code, unit tests (that run in Visual Studio Team System), and raw documentation for the task under the new &lt;A href="http://www.microsoft.com/resources/sharedsource/licensingbasics/communitylicense.mspx" mce_href="http://www.microsoft.com/resources/sharedsource/licensingbasics/communitylicense.mspx"&gt;Microsoft Community License&lt;/A&gt;. Try not to laugh too hard when you look at the code. Remember, I don't write code for a living, I'm one of those touchy-feely Program Manager people :)&lt;/P&gt;
&lt;P&gt;If all you want to do is get Visual Studio-style build numbers, of the form 1.0.yyMMdd.revision (for example, 1.0.51111.02 for the third build today), then you simply add the following line to your project file after any existing &amp;lt;Imports&amp;gt;:&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;FONT color=#800000&gt;Import&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;Project&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;$(MSBuildExtensionsPath)\Microsoft\AssemblyInfoTask\Microsoft.VersionNumber.targets&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;If anyone has trouble getting it to work, has comments, questions, or suggestions, please send 'em our way to &lt;A href="mailto:msbuild@microsoft.com" mce_href="mailto:msbuild@microsoft.com"&gt;msbuild@microsoft.com&lt;/A&gt; or &lt;A href="http://forums.microsoft.com/msdn/showforum.aspx?forumid=27&amp;amp;siteid=1" mce_href="http://forums.microsoft.com/msdn/showforum.aspx?forumid=27&amp;amp;siteid=1"&gt;post to our forum&lt;/A&gt;.Enjoy!&lt;/P&gt;
&lt;P&gt;[ Author: Neil Enns ]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=491947" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Neil+Enns/default.aspx">Neil Enns</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/AssemblyVersionInfo/default.aspx">AssemblyVersionInfo</category></item><item><title>Automating the Creation of Custom Tasks with TaskGenerator</title><link>http://blogs.msdn.com/msbuild/archive/2005/10/25/484888.aspx</link><pubDate>Wed, 26 Oct 2005 01:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:484888</guid><dc:creator>msbuild</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/msbuild/comments/484888.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msbuild/commentrss.aspx?PostID=484888</wfw:commentRss><description>&lt;P&gt;It's pretty common to have a bunch of existing tools to include in a build process, and it can be rather a pain to hand-write classes to wrap each of them as proper MSBuild tasks. As we worked on converting the Visual Studio source code to build with MSBuild we realised it would be super helpful to have some sort of tool to assist in writing those wrapper tasks.&lt;/P&gt;
&lt;P&gt;As good fortune would have it we had an awesome intern working in the MSBuild team last summer, and she wrote a nifty application to help with this process. The application is called TaskGenerator, and it lets you describe a command-line tool with XML, then it'll generate the appropriate MSBuild task source code that wraps the tool. Here's an example of what the XML for regsvr32.exe looks like:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;task&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;RegisterDll&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;prefix&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;toolname&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;regsvr32.exe&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;xmlns&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;http://schemas.microsoft.com/developer/msbuild/tasks/2005&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Unregister&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;boolean&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;switch&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;u&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Silent&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;boolean&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;switch&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;s&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CallDllInstall&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;boolean&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;switch&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;i&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;separator&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;:&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;argumentparameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CommandLine&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CommandLine&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;file&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Parameter&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dll&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;file&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;required&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;true&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;task&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;When you run this through the tool you get a registerdll.cs file that implements a &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.build.utilities.tooltask"&gt;ToolTask&lt;/A&gt;, and can be compiled into a custom task.&lt;/P&gt;
&lt;P&gt;We were hoping that this tool would be our first post to the new GotDotNet site, but they've had a few complications during their upgrade. Rather than wait, we're making it available now as a technology preview &lt;A href="http://www.gotdotnet.com/codegallery/releases/checkForDownload.aspx?id=ab5b4b2f-fa4c-4535-b292-26a2dbca3839&amp;amp;releaseid=31c6bfb0-44ea-4ae9-bce5-315cc9fb24b6"&gt;[download here]&lt;/A&gt;. We're using the new &lt;A href="http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx#ERC"&gt;Microsoft Community License&lt;/A&gt; for the release, and while there's no source code for the tool at the moment we will change that sometime during November. This release was built against build 2.0.50727 of the .NET Framework, and will not work against earlier releases.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Note that this release is a technology preview.&lt;/FONT&gt;&lt;/STRONG&gt; As with all MSBuild projects it was built using test-driven development and unit tests. However, it has not undergone a complete verification by our test team. To the best of our knowledge it is stable, but as you play with it you may find the occasional bug, area where the XML schema is limiting, or errors in the documentation. In addition, since it is a technology preview, there is no guarantee that future versions will honour XML used by this release of the tool. It is highly likely that we will modify the XML schema based on feedback from customers, and the next release of the tool will not include any code for backwards compatibility. Any XML files you create with this technology preview will only ever work with this release of the tool, build 1.0.0.0.&lt;/P&gt;
&lt;P&gt;Enjoy, and as always send feedback to &lt;A href="mailto:msbuild@microsoft.com"&gt;msbuild@microsoft.com&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;[ Author: Neil Enns ]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=484888" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msbuild/archive/tags/Neil+Enns/default.aspx">Neil Enns</category><category domain="http://blogs.msdn.com/msbuild/archive/tags/Tools/default.aspx">Tools</category></item></channel></rss>