<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Build Automation on Marko Apfel</title><link>http://blog.marko-apfel.de/tags/build-automation/</link><description>Recent content in Build Automation on Marko Apfel</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 05 Oct 2012 08:12:00 +0200</lastBuildDate><atom:link href="http://blog.marko-apfel.de/tags/build-automation/index.xml" rel="self" type="application/rss+xml"/><item><title>Be careful when Git suppresses bin Folders</title><link>http://blog.marko-apfel.de/posts/be-careful-when-git-suppresses-bin-folders/</link><pubDate>Fri, 05 Oct 2012 08:12:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/be-careful-when-git-suppresses-bin-folders/</guid><description>&lt;h2 id="initial-situation"&gt;Initial situation&lt;/h2&gt;
&lt;p&gt;Often for Visual Studio projects the typical content of a &lt;code&gt;.gitignore&lt;/code&gt; file contains this line&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bin&lt;/code&gt; or&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[B|b]in&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is used to avoid that Git tries to track compile outputs as repository relevant data.&lt;/p&gt;</description></item><item><title>Converting Creole to HTML, PDF, DOCX, ..</title><link>http://blog.marko-apfel.de/posts/converting-creole-to-html-pdf-docx/</link><pubDate>Fri, 24 Aug 2012 13:14:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/converting-creole-to-html-pdf-docx/</guid><description>&lt;h2 id="challenge"&gt;Challenge&lt;/h2&gt;
&lt;p&gt;We documented a project on Github with the Wiki there. For most articles we used Creole as markup language. Now we have to deliver a lot of the content to our client in an usual format like PDF or DOCX.&lt;/p&gt;</description></item><item><title>Installing of SDKs, Visual Studio and additional toolsets on build machines</title><link>http://blog.marko-apfel.de/posts/installing-of-sdks-visual-studio-and-additional-toolsets-on-build-machines/</link><pubDate>Mon, 05 Dec 2011 15:07:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/installing-of-sdks-visual-studio-and-additional-toolsets-on-build-machines/</guid><description>&lt;p&gt;Last week I get the information directly from Microsoft, that at build machines SDKs must be installed to guarantee that MSBuild works well in some circumstances.&lt;/p&gt;
&lt;p&gt;We have the problem, that a self-containing build should include all necessary build artifacts – particularly Silverlight stuff. I tried to encapsulate the special steps in own targets and a build was finally possible (see my former posts). But at local machines without installed Silverlight stuff it gives problems for problems. Because reason of time finally I decide to go the Microsoft way – they break my volition.&lt;/p&gt;</description></item><item><title>@Microsoft: please provide universal and professional concepts</title><link>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</link><pubDate>Sun, 20 Nov 2011 11:35:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</guid><description>&lt;p&gt;Why such constructs are included in the &lt;code&gt;.csproj&lt;/code&gt;-Files?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So it every projects needs some manual steps to clean the project file so the solution could be build on a continuous integration server. That annoying!&lt;/p&gt;</description></item><item><title>Toolset agnostic build server and Silverlight projects</title><link>http://blog.marko-apfel.de/posts/toolset-agnostic-build-server-and-silverlight-projects/</link><pubDate>Thu, 10 Nov 2011 22:42:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/toolset-agnostic-build-server-and-silverlight-projects/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Normally I try to have my continuous integration as most a possible toolset free to ensure that no local stuff could have an impact to my build.&lt;/p&gt;
&lt;p&gt;My Silverlight app references a special compile target in a folder outside my developer tree:&lt;/p&gt;</description></item><item><title>Setup license stuff for PostSharp 2.1</title><link>http://blog.marko-apfel.de/posts/setup-license-stuff-for-postsharp-2-1/</link><pubDate>Tue, 08 Nov 2011 20:03:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/setup-license-stuff-for-postsharp-2-1/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Normally &lt;em&gt;PostSharp&lt;/em&gt; runs fine on unattended build servers. So on our global Jenkins continuous integration server &lt;em&gt;PostSharp&lt;/em&gt; does the job.&lt;/p&gt;
&lt;p&gt;But on my local TeamCity continuous integration server I got the following error:&lt;/p&gt;</description></item><item><title>MSB4067: The element &lt;ImportGroup&gt; beneath element &lt;Project&gt; is unrecognized.</title><link>http://blog.marko-apfel.de/posts/msb4067-the-element-importgroup-beneath-element-project-is-unrecognized/</link><pubDate>Tue, 08 Nov 2011 11:32:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/msb4067-the-element-importgroup-beneath-element-project-is-unrecognized/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Our global Jenkins continuous integration server throws this error during compile step. My local TeamCity continuous integration server runs fine. What is the difference.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;I integrate some static code analysis steps via MSBuild-targets in the csproj files.&lt;/p&gt;</description></item><item><title>Running StyleCop without an installation to empower continuous integration</title><link>http://blog.marko-apfel.de/posts/running-stylecop-without-an-installation-to-empower-continuous-integration/</link><pubDate>Mon, 07 Nov 2011 22:32:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/running-stylecop-without-an-installation-to-empower-continuous-integration/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;A continuous integration server should only have a minimal toolset installed. This ensures that no unwanted libraries could affect the build and other steps.&lt;/p&gt;
&lt;p&gt;Clearly that with this slogan also &lt;em&gt;StyleCop&lt;/em&gt; should not be installed to the CI server. But we wanna have this analysis as an part of the whole build.&lt;/p&gt;</description></item><item><title>Note to self: Visual Studio makros for build events</title><link>http://blog.marko-apfel.de/posts/note-to-self-visual-studio-makros-for-build-events/</link><pubDate>Wed, 06 Jul 2011 10:01:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/note-to-self-visual-studio-makros-for-build-events/</guid><description>&lt;p&gt;&lt;img src="https://web.archive.org/web/20111211202356id_/https://sites.google.com/site/markoapfel/VisualStudio.Makros.png" alt="Screenshot for Note to self: Visual Studio macros for build events" loading="lazy" decoding="async"&gt;&lt;/p&gt;</description></item><item><title>Whitepaper “Aufbau eines pragmatisch smarten DevTree“</title><link>http://blog.marko-apfel.de/posts/whitepaper-aufbau-eines-pragmatisch-smarten-devtree/</link><pubDate>Wed, 15 Jun 2011 11:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/whitepaper-aufbau-eines-pragmatisch-smarten-devtree/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Kommen Ihnen diese Szenarien bekannt vor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;der Build scheitert, weil ein Kollege ein 3rd Party Framework eingeführt hat und nur lokal auf seiner Maschine die benötigten Bibliotheken installiert sind&lt;/li&gt;
&lt;li&gt;der Build scheitert weil ein 3rd Party Framework auf einigen Maschinen in anderen Versionen vorhanden ist und sich damit die Datei-Versionen und -Funktionalitäten der Bibliotheken unterscheiden&lt;/li&gt;
&lt;li&gt;das Build-Ergebnis unterscheidet sich auf verschiedenen Maschinen weil jeweils andere Toolsets in die kompilierende Umgebung eingebunden sind (Code-Weaver und -Analysierer, die als Plugin in Visual Studio installiert sind)&lt;/li&gt;
&lt;li&gt;die benötigten Fragmente für ein aktuell benötigtes MSI-Setup (z.B. PDF-Dokumentationen) liegen in der Verantwortlichkeit eines Kollegen, der diese Dateien auf seinem Laptop hat, mit welchem er gerade unterwegs ist&lt;/li&gt;
&lt;li&gt;nach der Inbetriebnahme einer neuen Maschine sind stundenlange Installationsopern notwendig um wieder am Projekt mitarbeiten zu können&lt;/li&gt;
&lt;li&gt;die ausgerollte Software läuft beim Kunden nicht, weil Bibliotheken in der Applikation referenziert wurde, welche nicht im Standard-Installationsumfang beim Kunden sind&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="root-cause-analysis"&gt;Root Cause Analysis&lt;/h2&gt;
&lt;p&gt;Was ist der Grund all dieser und verwandter Probleme?&lt;/p&gt;</description></item><item><title>Calling esriRegasm manually (outside an ArcGIS-installation)</title><link>http://blog.marko-apfel.de/posts/calling-esriregasm-manually-outside-an-arcgis-installation/</link><pubDate>Tue, 26 Apr 2011 20:53:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/calling-esriregasm-manually-outside-an-arcgis-installation/</guid><description>&lt;p&gt;Since &lt;em&gt;ArcGIS 10&lt;/em&gt; during the &lt;em&gt;Visual Studio&lt;/em&gt; build an additional target with the execution of a program named &lt;code&gt;esriRegasm&lt;/code&gt; is called. Amongst other things this program adds the COM-categories in the registry.&lt;/p&gt;</description></item><item><title>Integrate Simian in Hudson CI-server</title><link>http://blog.marko-apfel.de/posts/integrate-simian-in-hudson-ci-server/</link><pubDate>Wed, 07 Jul 2010 00:04:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/integrate-simian-in-hudson-ci-server/</guid><description>&lt;h2 id="steps-to-integrate-simian"&gt;Steps to integrate simian&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;add simian to VCS&lt;br&gt;
(in our case folder &lt;code&gt;./trunk/build/simian&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;add build step to your Hudson job&lt;br&gt;
(Execute Windows batch command)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;use following two commands&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bat" data-lang="bat"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.\trunk\build\Simian\bin\simian-2.2.24.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -formatter=xml:.\trunk\bin\Simian.Result.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.Test/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.DbFrame/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.DbLayout/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.Designer.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/XServer1\_8.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -threshold=10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; **/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;EXIT&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="explanation"&gt;Explanation&lt;/h2&gt;
&lt;p&gt;For better visibility and understanding I have split the first call (simian) over several lines. Needless to say that you must contract all parameters and arguments of the simian call in one line.&lt;/p&gt;</description></item><item><title>Working with Microsoft FxCop</title><link>http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/</link><pubDate>Wed, 11 Nov 2009 09:06:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/</guid><description>&lt;h2 id="run-fxcop-as-a-post-build-event"&gt;Run FxCop as a post build event&lt;/h2&gt;
&lt;p&gt;Since FxCop 1.36 it is possible to include FxCop in a post-build event.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/developingtools-fxcop-01.png" alt="Screenshot for Working with Microsoft FxCop" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;So FxCop runs after compiling in Visual Studio and allows you directly jumping to the warned line.&lt;/p&gt;</description></item><item><title>Post-build event with folders which contains spaces</title><link>http://blog.marko-apfel.de/posts/post-build-event-with-folders-which-contains-spaces/</link><pubDate>Mon, 27 Apr 2009 03:47:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/post-build-event-with-folders-which-contains-spaces/</guid><description>&lt;p&gt;If you want to use a Post-build event with folders which contains a space often you get an error like:&lt;/p&gt;
&lt;p&gt;The system cannot find the file specified.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3397,13):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error MSB3073: The command
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;COPY C:\Projekte\_Learning By Doing\EsriDE.QA.StyleCop\bin\Debug\EsriDE.QA.StyleCop.dll
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;C:\Program Files\Microsoft StyleCop 4.3&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exited with code 1.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In my case I used the macro &lt;code&gt;$(TargetPath)&lt;/code&gt; in following line which contains indirectly the spaces in &lt;code&gt;_Learning By Doing&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>GACing und Kopieren nach dem Kompilieren</title><link>http://blog.marko-apfel.de/posts/gacing-und-kopieren-nach-dem-kompilieren/</link><pubDate>Thu, 08 Mar 2007 13:00:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/gacing-und-kopieren-nach-dem-kompilieren/</guid><description>&lt;p&gt;Beim Entwickeln eigener Functoide (Custom Functoids) und deren Verwendung im BizTalk Mapper muss das Kompilat sowohl in den GAC als auch ins Verzeichnis &lt;code&gt;c:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Mapper Extensions&lt;/code&gt; kopiert werden.&lt;/p&gt;</description></item></channel></rss>