<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://thomasfreudenberg.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>Thomas Freudenberg : MSBuild</title><link>http://thomasfreudenberg.com/blog/archive/tags/MSBuild/default.aspx</link><description>Tags: MSBuild</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Mixing C# and VB.NET in one assembly</title><link>http://thomasfreudenberg.com/blog/archive/2006/08/22/Mixing-C_2300_-and-VB.NET-in-one-assembly.aspx</link><pubDate>Mon, 21 Aug 2006 19:18:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:17593</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=17593</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=17593</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2006/08/22/Mixing-C_2300_-and-VB.NET-in-one-assembly.aspx#comments</comments><description>&lt;div style="-moz-column-count:2;-moz-column-gap:2em;"&gt;
&lt;p&gt;A couple of weeks ago Jayson Knight invited me to join the &lt;a href="http://csmvps.com/"&gt;CSMVP&amp;#39;s&lt;/a&gt;&amp;#39; &lt;a href="http://csmvps.com/blogs/news/archive/2006/08/14/Community-Server-MVP_2700_s-Alabaster-CSModule-Package.aspx"&gt;CSModules package&lt;/a&gt;. This project was created to incorporate several CSModules written by CS MVP&amp;#39;s. So I bought into that project by bringing along my Akismet spam rule.&lt;br /&gt;
&lt;/p&gt;
 
&lt;p&gt;At that point in time, for each CSModule there was a single Visual Studio project, all bound together in a Visual Studio solution. But our goal was to incorporate all modules into a single assembly, so the user only has to copy one DLL to his /bin web folder.&lt;/p&gt;
 
&lt;p&gt;My first idea was to put all sources into a single project. However, since every CS MVP wrote his module in his favorite language, there were both C# and VB.NET projects. Unfortunately, in Visual Studio projects have a certain type supporting only a single language.&lt;/p&gt;
 
&lt;p&gt;But luckily, even if there&amp;#39;s no support by the IDE, you still can compile different .NET languages into one assembly. The solution are modules. A modules&amp;nbsp;is a unit of&amp;nbsp;compilation, comparable to .obj files. It can&amp;#39;t stand by its own, but must be linked into an assembly before it can be used. Basically, a module is an assembly without a manifest. You can get more details on MSDN at &lt;a href="http://msdn2.microsoft.com/en-us/library/k669k83h.aspx"&gt;.netmodule Files as Linker Input&lt;/a&gt;. Additionally I recommend reading Junfeng Zhang&amp;#39;s&amp;nbsp;&lt;a href="http://blogs.msdn.com/junfeng/archive/2005/02/12/371683.aspx"&gt;Netmodule vs. Assembly&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/junfeng/archive/2004/07/15/183813.aspx"&gt;Multimodule Assemblies&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;Knowing the concept of modules, I was able to write a MSBuild project file to compile all CSModules into a single assembly. Here&amp;#39;s an (extremely) simplified version:&lt;/p&gt;
&lt;/div&gt;
 &lt;div class="wlWriterSmartContent" id="C411E4BC-FA5A-4068-9F25-1AA2B5A98D76:c305d864-e94d-4828-99e0-506c5e32cc4f" style="margin:0px;padding:0px;display:inline;float:none;"&gt;&lt;div style="display:block;background-color:#f7f7ff;"&gt;
&lt;pre&gt;&lt;table&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;DefaultTargets&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;a class="linkification-ext" href="http://schemas.microsoft.com/developer/msbuild/2003" title="Linkification: http://schemas.microsoft.com/developer/msbuild/2003"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- Target folders --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SourcePath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;src&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SourcePath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- Specify the sources to include, excluding any assembly info&amp;#39;s --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;CSFiles&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Include&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(SourcePath)/**/*.cs&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Exclude&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(SourcePath)/**/assemblyinfo.cs&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VBFiles&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Include&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(SourcePath)/**/*.vb&amp;quot;&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Exclude&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(SourcePath)/**/assemblyinfo.vb;$(SourcePath)/**/My Project/*&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- Specify all referenced assembly --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;References&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Include&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;lib/2.1 RTM/*.dll&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- Target files --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;OutputModule&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;MyModule&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;OutputModule&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- builds the CSMVPs.CSModules assembly --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Target&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Inputs&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;@(CSFiles);@(VBFiles);@(References)&amp;quot;&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Outputs&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(OutputModule).dll&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- compile C# sources --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;CSC&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Sources&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;@(CSFiles)&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;References&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;@(References)&amp;quot;&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;OutputAssembly&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(OutputModule).CS.netmodule&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;TargetType&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;module&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;CSC&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- compile VB.NET sources --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VBC&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Sources&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;@(VBFiles)&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;References&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;@(References)&amp;quot;&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;OutputAssembly&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;$(OutputModule).VB.netmodule&amp;quot;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;TargetType&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;module&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;VBC&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;&amp;lt;!-- link the C# and VB.NET modules --&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Exec&lt;/span&gt; &lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;Command&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;link /dll /ltcg /out:$(OutputModule).dll *.netmodule&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;
	
&lt;tr&gt;
		
&lt;td&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/td&gt;
	&lt;/tr&gt;&lt;/table&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=17593" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/Development/default.aspx">Development</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/CSMVPs/default.aspx">CSMVPs</category></item><item><title>The Return of the Console</title><link>http://thomasfreudenberg.com/blog/archive/2003/10/29/The-Return-of-the-Console.aspx</link><pubDate>Wed, 29 Oct 2003 17:31:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:251</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=251</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=251</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2003/10/29/The-Return-of-the-Console.aspx#comments</comments><description>&lt;p&gt;I've never stopped using the console since the good old DOS. In fact, each developer at our &lt;a href="http://www.cycos.com/"&gt;company&lt;/a&gt; is using the console, i.e. &lt;a href="http://www.jpsoft.com/4ntdes.htm"&gt;4NT&lt;/a&gt;. Our development environment depends heavily on the console, the complete build and deployment process is realized with batch files.&lt;/p&gt;
&lt;p&gt;What really suprised me at the PDC is Microsoft's homage to the console.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In more of half of the sessions I attended you were able to see the speaker using the console. Probably that's mainly a plug for the new &lt;a href="http://thomasfreudenberg.com/blog/posts/246.aspx"&gt;MSBuild&lt;/a&gt; tool. But anyway, they're using it.&lt;/li&gt;
&lt;li&gt;With the next version of the CLR you're able to colorize the output to the console.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;However, it's sad to see people &lt;a href="http://www.codeproject.com/threads/pausep.asp?msg=296675#xx296675xx"&gt;who don't know anything about the console&lt;/a&gt;...&lt;/p&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=251" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/PDC+_2700_03/default.aspx">PDC '03</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/MSBuild/default.aspx">MSBuild</category></item><item><title>[TLS347] Introducing MSBuild: The Universal Build Engine for Visual Studio "Whidbey" and "Longhorn"</title><link>http://thomasfreudenberg.com/blog/archive/2003/10/27/_5B00_TLS347_5D00_-Introducing-MSBuild_3A00_-The-Universal-Build-Engine-for-Visual-Studio-_2600_quot_3B00_Whidbey_2600_quot_3B00_-and-_2600_quot_3B00_Longhorn_2600_quot_3B00_.aspx</link><pubDate>Mon, 27 Oct 2003 15:59:00 GMT</pubDate><guid isPermaLink="false">483d7ed9-aa38-4432-af18-89f61e4445bf:246</guid><dc:creator>Thomas Freudenberg</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/rsscomments.aspx?PostID=246</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://thomasfreudenberg.com/blog/commentapi.aspx?PostID=246</wfw:comment><comments>http://thomasfreudenberg.com/blog/archive/2003/10/27/_5B00_TLS347_5D00_-Introducing-MSBuild_3A00_-The-Universal-Build-Engine-for-Visual-Studio-_2600_quot_3B00_Whidbey_2600_quot_3B00_-and-_2600_quot_3B00_Longhorn_2600_quot_3B00_.aspx#comments</comments><description>&lt;p&gt;Several weeks ago I played around with NAnt, since we need a decent build environment for our new software. I&amp;#39;ve read about MSBuild a.k.a. XBuild before, but no information was available (at least outside Microsoft).&lt;/p&gt;
&lt;p&gt;Today I attended the session about MSBuild. It bases on XML files, which are -- suprise, suprise -- similar to the build files of &lt;a href="http://nant.sourceforge.com/"&gt;NAnt&lt;/a&gt;. As far as I can see they have mainly the same feature set. However, the big advantage of MSBuild compared to NAnt is its integration and support by Whidbey. For NAnt you have to either maintain a &lt;em&gt;.build&lt;/em&gt; and a &lt;em&gt;.vcproj&lt;/em&gt; files, or use the new &lt;em&gt;solution&lt;/em&gt; task, which is still a little bit buggy. For Whidbey, they have (once again &lt;img alt="sigh" border="0" src="http://thomasfreudenberg.com/images/emoticons/smiley_sigh.gif" /&gt;) changed the format of the &lt;em&gt;.vcproj&lt;/em&gt; file, so it&amp;#39;s the single place to edit your project.&lt;/p&gt;&lt;img src="http://thomasfreudenberg.com/aggbug.aspx?PostID=246" width="1" height="1"&gt;</description><category domain="http://thomasfreudenberg.com/blog/archive/tags/PDC+_2700_03/default.aspx">PDC '03</category><category domain="http://thomasfreudenberg.com/blog/archive/tags/MSBuild/default.aspx">MSBuild</category></item></channel></rss>