<?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>automation &#8211; martinklinke.com</title>
	<atom:link href="https://www.martinklinke.com/tag/automation/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.martinklinke.com</link>
	<description>IT&#039;s my business</description>
	<lastBuildDate>Wed, 01 Jun 2016 21:15:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>How to generate C# code in 2016</title>
		<link>https://www.martinklinke.com/2016/06/01/how-to-generate-c-code-in-2016/</link>
		
		<dc:creator><![CDATA[Martin Klinke]]></dc:creator>
		<pubDate>Wed, 01 Jun 2016 21:15:21 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tools]]></category>
		<guid isPermaLink="false">http://www.martinklinke.com/?p=117</guid>

					<description><![CDATA[Today I wanted to generate a bit of rather trivial C# code to provide a convenient facade to an internal library. After creating a T4 template, loadingÂ the required assembly and adding some namespace imports,Â I found it rather inefficientÂ to write code in that simple text editor without IntelliSense. So of course, there is always the option [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today I wanted to generate a bit of rather trivial C# code to provide a convenient facade to an internal library. After creating a <a href="https://msdn.microsoft.com/en-us/library/bb126445.aspx">T4 template</a>, loadingÂ the required assembly and adding some namespace imports,Â I found it rather inefficientÂ to write code in that simple text editor without IntelliSense. So of course, there is always the option to write a code generator class with a method that returns a string. The T4 template can instantiate that class, call the method and emit the value directly:</p>
<blockquote><p>&lt;#= new CodeGenerator().Generate() #&gt;</p></blockquote>
<p>Next comes the question of how to implement the generator. StringBuilder? Come on, there must be a better way. I checked in another library that I knew was using code generation. Then IÂ sawÂ thatÂ the library was usingÂ <a href="https://msdn.microsoft.com/en-us/library/y2k85ax6(v=vs.110).aspx">CodeDOM</a>. For my simple needs, I decided that this would be sufficient for the time being (and efficient, since I didn&#8217;t want to spend too much time there).</p>
<p>But then I started toÂ wonder. WillÂ CodeDOMÂ still work with the newÂ <a href="https://dotnet.github.io/">.NET Core</a>?</p>
<p><span id="more-117"></span></p>
<p>The answer was <a href="http://stackoverflow.com/questions/7852926/microsoft-roslyn-vs-codedom">no</a>.</p>
<p>The linked StackOverflow question already includes the &#8220;replacement&#8221; of CodeDOM (CodeDOM is referred to as someÂ precursor to part of what Roslyn does): The &#8220;new&#8221; <a href="https://github.com/dotnet/roslyn">Roslyn compiler platform</a> (which has been around for a while by now). More specifically, the <a href="https://johnkoerner.com/csharp/creating-code-using-the-syntax-factory/">SyntaxFactory</a>Â that comes with Roslyn.</p>
<p>The only draw-back I see immediately: The code that uses the SyntaxFactoryÂ seemsÂ a lot more verbose than the CodeDOM API. On the plus side, theÂ Roslyn way should beÂ superior toÂ CodeDOM regarding features and support for language constructs.</p>
<p>There are already articlesÂ available for <a href="https://dogschasingsquirrels.com/2014/07/16/generating-code-with-roslyn/">generating code with Roslyn</a>, so I will leave the details to the interested reader.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MDSD Survey 2010</title>
		<link>https://www.martinklinke.com/2010/06/10/mdsd-survey-2010/</link>
		
		<dc:creator><![CDATA[Martin Klinke]]></dc:creator>
		<pubDate>Thu, 10 Jun 2010 12:25:27 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[modeling]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[uml]]></category>
		<guid isPermaLink="false">http://www.martinklinke.com/?p=94</guid>

					<description><![CDATA[The Generative Software GmbH and the FZI have done a survey about the usage of Model-Driven Software Development approaches with around 300 participants. Almost 90% of the respondents have prior experience with the topic, so the report might give interesting general insights. Please see theÂ MDSD report 2010 (sorry, only in German) for details on the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The <a href="http://www.generative-software.de/">Generative Software GmbH</a> and the <a href="http://www.fzi.de/">FZI</a> have done a survey about the usage of Model-Driven Software Development approaches with around 300 participants. Almost 90% of the respondents have prior experience with the topic, so the report might give interesting general insights.</p>
<p>Please see theÂ <a title="MDSD Report 2010" href="http://www.mdsd-umfrage.de/mdsd-report-2010.pdf">MDSD report 2010</a> (sorry, only in German) for details on the results.</p>
<p>Do you make use of MDSD techniques?</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tools for Eclipse build automation</title>
		<link>https://www.martinklinke.com/2008/07/10/tools-for-eclipse-build-automation/</link>
					<comments>https://www.martinklinke.com/2008/07/10/tools-for-eclipse-build-automation/#comments</comments>
		
		<dc:creator><![CDATA[Martin Klinke]]></dc:creator>
		<pubDate>Thu, 10 Jul 2008 21:55:13 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tools]]></category>
		<guid isPermaLink="false">http://www.martinklinke.com/?p=40</guid>

					<description><![CDATA[Eclipse is a great IDE for developing any kind of Java code, e.g. Rich Client (RCP), Web or standalone applications. However, when a project is built using any IDE (yes, there are others &#8211; e.g. Netbeans or IntelliJ IDEA), there may be some dependencies towards the chosen tool when it comes to compiling and packaging [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a title="Eclipse.org" href="http://www.eclipse.org">Eclipse</a> is a great IDE for developing any kind of Java code, e.g. Rich Client (<a title="Eclipse Rich Client Platform" href="http://wiki.eclipse.org/index.php/Rich_Client_Platform">RCP</a>), Web or standalone applications. However, when a project is built using any IDE (yes, there are others &#8211; e.g. <a title="Netbeans" href="http://www.netbeans.org/">Netbeans</a> or <a title="IntelliJ IDEA" href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a>), there may be some dependencies towards the chosen tool when it comes to compiling and packaging the code. This doesn&#8217;t matter too much as long as there is no requirement to <a title="Build and Test Automation for plug-ins and features - Eclipse Article" href="http://www.eclipse.org/articles/Article-PDE-Automation/automation.html">automate the build process</a>. This will happen, as soon as you decide to set up <a title="Continuous Integration - martinfowler.com" href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> for your project.</p>
<p><span id="more-40"></span></p>
<p>In many cases, <a title="Apache Ant" href="http://ant.apache.org/">Ant</a> is the tool of choice for automating the build process. As far as I know, Netbeans already uses Ant as build tool by default. Eclipse has its own way of describing the project configuration (source/binary folders, required libraries etc.) with files like &#8220;.project&#8221; and &#8220;.classpath&#8221;. The naive approach for building an Eclipse project with Ant would be to duplicate all the information and write a separate Ant build file that does all the work and is independent of an Eclipse instance. There are several disadvantages that come along with this approach:</p>
<ol>
<li>Inconsistencies may occur whenever a new library is added or the structure of the project changes in a significant way (e.g. a new source folder is introduced) =&gt; the build file has to be updated manually when the build fails.</li>
<li>There is no real guarantee that both the Eclipse and the Ant build produce the same output =&gt; Problems may not be visible until runtime tests are performed.</li>
</ol>
<p>So what could be a more elegant solution? Of course, to use the information for the build that is contained in the Eclipse project artifacts already. The only tool I found up to now that does right this is <a title="ant4eclipse" href="http://ant4eclipse.sourceforge.net/">ant4eclipse</a>. Basically, it defines some Ant tasks that enable the following actions (from ant4eclipse&#8217;s website):</p>
<blockquote>
<ul>
<li>Setup classpathes as defined in Eclipse&#8217;s  					<code>.classpath</code>-file</li>
<li>checkout complete workspaces as it&#8217;s possible with the <code>Team Project Set</code> feature of eclipse</li>
<li>run your Java applications as you have defined them in an Eclipse <code>Launch Configuration</code></li>
</ul>
</blockquote>
<p>This avoids the redundancy and leverages the information that is already present as soon as the project compiles in Eclipse. To be honest, I haven&#8217;t evaluated ant4eclipse yet, but I probably will as soon as the next Continuous Integration project will start. Seriously, who would like to write dozens of Ant files to do the work that Eclipse already does?</p>
<p>Another interesting project that seems to focus solely on Eclipse plugins, features and RCP apps is <a title="Pluginbuilder.org" href="http://www.pluginbuilder.org">Pluginbuilder</a>. The <a title="Tutorial movie - Pluginbuilder.org" href="http://www.pluginbuilder.org/documentation/tutorialmovie/">tutorial movie</a> looks really impressive. The homepage says that Pluginbuilder consists of two parts:</p>
<ul>
<blockquote>
<li>An <strong>Eclipse plug-in </strong>allows to configure the build in the project&#8217;s workspace and run the build locally</li>
<li>Then the configuration can be uploaded to the <strong>server platform</strong> where the build can be scheduled</li>
</blockquote>
</ul>
<p>That&#8217;s a nice alternative to the manual configuration of the Eclipse headless build and integration with e.g. <a title="CruiseControl" href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>. Haven&#8217;t evaluated that one neither, but this is definitely a very interesting and promising tool for Eclipse plugin and RCP development which I can imagine may be indispensable once you are used to it.</p>
<p>Which other tools for Eclipse build automation do you know?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.martinklinke.com/2008/07/10/tools-for-eclipse-build-automation/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
