<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Development on Marko Apfel</title><link>http://blog.marko-apfel.de/topics/development/</link><description>Recent content in Development on Marko Apfel</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 02 Dec 2025 08:29:07 +0100</lastBuildDate><atom:link href="http://blog.marko-apfel.de/topics/development/index.xml" rel="self" type="application/rss+xml"/><item><title>Frequently Asked Questions About Given-When-Then</title><link>http://blog.marko-apfel.de/posts/frequently-asked-questions-about-given-when-then/</link><pubDate>Wed, 05 Nov 2025 08:51:07 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/frequently-asked-questions-about-given-when-then/</guid><description>&lt;p&gt;Given–When–Then (GWT) is a simple but powerful format for describing expected system behavior. It is commonly associated with &lt;strong&gt;Behavior-Driven Development (BDD)&lt;/strong&gt; and is particularly useful for writing clear and testable acceptance criteria.&lt;/p&gt;</description></item><item><title>Slicing CRUD-Related Activities into Separate Backlog Items</title><link>http://blog.marko-apfel.de/posts/slicing-crud-related-activities-into-separate-backlog-items/</link><pubDate>Thu, 25 Sep 2025 08:05:07 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/slicing-crud-related-activities-into-separate-backlog-items/</guid><description>&lt;p&gt;A common question during backlog refinement is whether closely related CRUD operations should be implemented within a single Product Backlog Item (PBI) or split into multiple work items.&lt;/p&gt;
&lt;p&gt;At first glance, grouping &lt;strong&gt;create&lt;/strong&gt;, &lt;strong&gt;rename&lt;/strong&gt;, and &lt;strong&gt;delete&lt;/strong&gt; operations together seems reasonable. They all operate on the same entity and appear to belong to the same feature.&lt;/p&gt;</description></item><item><title>Programming Languages of the Future</title><link>http://blog.marko-apfel.de/posts/programming-languages-of-the-future/</link><pubDate>Thu, 24 Jul 2025 08:54:07 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/programming-languages-of-the-future/</guid><description>&lt;p&gt;Maybe something interesting to aware off - it&amp;rsquo;s called Atwood&amp;rsquo;s Law:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Any application that can be written in JavaScript, will eventually be written in JavaScript.&amp;rdquo;
Jeff Atwood, 2007&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In case you ask &amp;ldquo;Who the fuck is Atwood&amp;rdquo;: &lt;a href="https://en.wikipedia.org/wiki/Jeff_Atwood"&gt;a very well-known IT guru&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Modern Collaboration in Software Engineering</title><link>http://blog.marko-apfel.de/posts/modern-collaboration-in-software-engineering/</link><pubDate>Wed, 23 Jul 2025 09:31:07 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/modern-collaboration-in-software-engineering/</guid><description>&lt;h2 id="favor-teams-over-email"&gt;Favor Teams over Email&lt;/h2&gt;
&lt;h3 id="why-email-often-sucks"&gt;Why email (often) sucks&lt;/h3&gt;
&lt;p&gt;Starting point: an email that had already been bounced back and forth between several colleagues before finally landing in the Outlook inbox of the author of this message&lt;/p&gt;</description></item><item><title>How to Slice a Feature into Product Backlog Items</title><link>http://blog.marko-apfel.de/posts/how-to-slice-a-feature-into-product-backlog-items/</link><pubDate>Thu, 03 Jul 2025 19:09:07 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/how-to-slice-a-feature-into-product-backlog-items/</guid><description>&lt;p&gt;Breaking a large feature into smaller Product Backlog Items (PBIs) is one of the central activities of backlog refinement.&lt;/p&gt;
&lt;p&gt;The goal is not simply to divide the implementation into smaller technical pieces. A good PBI should describe a meaningful piece of &lt;strong&gt;user-facing value&lt;/strong&gt;, while technical implementation details are usually captured as Tasks underneath those PBIs.&lt;/p&gt;</description></item><item><title>What Is the Recommended Monitor Setup for Software Developers?</title><link>http://blog.marko-apfel.de/posts/what-is-the-recommended-monitor-setup-for-software-developers/</link><pubDate>Tue, 01 Oct 2024 13:37:07 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/what-is-the-recommended-monitor-setup-for-software-developers/</guid><description>&lt;h2 id="what-is-the-recommended-monitor-setup-for-software-developers"&gt;What is the recommended monitor setup for software developers?&lt;/h2&gt;
&lt;p&gt;The recommended monitor setup for software developers often depends on personal preferences, specific job tasks, and available workspace. However, there are a few key guidelines that many developers find useful:&lt;/p&gt;</description></item><item><title>F#, ArcGIS Runtime and error “Cannot create unknown type '{http://schemas.esri.com/arcgis/runtime/2013}MapView'”</title><link>http://blog.marko-apfel.de/posts/f-sharp-arcgis-runtime-and-error-cannot-create-unknown-type-http-schemas-esri-com-arcgis-runtime-2013-mapview/</link><pubDate>Tue, 14 Jul 2015 17:15:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/f-sharp-arcgis-runtime-and-error-cannot-create-unknown-type-http-schemas-esri-com-arcgis-runtime-2013-mapview/</guid><description>&lt;p&gt;By playing with F# and ArcGIS Runtime I tried to re-create a sample C# project with F#.&lt;/p&gt;
&lt;p&gt;For the WPF part I used the Visual Studio extension &lt;a href="https://visualstudiogallery.msdn.microsoft.com/e0907c99-bb04-4eb8-9692-9333d5ff4399"&gt;F# Empty Windows App (WPF)&lt;/a&gt; and &lt;a href="https://visualstudiogallery.msdn.microsoft.com/ad49fd5c-930c-4fe6-a30e-2d0d6778c565"&gt;F# Windows App (WPF, MVVM)&lt;/a&gt; the NuGet packages &lt;a href="https://www.nuget.org/packages/FSharp.ViewModule.Core/"&gt;FSharp.ViewModule.Core&lt;/a&gt; and &lt;a href="https://www.nuget.org/packages/FsXaml.Wpf/"&gt;FsXaml for WPF&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Visual Studio – Getting compilation error “The type 'XAML' is not defined.”</title><link>http://blog.marko-apfel.de/posts/visual-studio-getting-compilation-error-the-type-xaml-is-not-defined/</link><pubDate>Thu, 09 Jul 2015 06:34:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-getting-compilation-error-the-type-xaml-is-not-defined/</guid><description>&lt;p&gt;During compilation of the &lt;a href="https://visualstudiogallery.msdn.microsoft.com/e0907c99-bb04-4eb8-9692-9333d5ff4399"&gt;F# Empty Windows App (WPF)&lt;/a&gt; I got that error (check the output pane carefully).&lt;/p&gt;
&lt;p&gt;&lt;a href="image_6.png"&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/visual-studio-getting-compilation-error-the-type-xaml-is-not-defined/image-thumb-2.png" alt="image" loading="lazy" decoding="async" title="image"&gt;&lt;figcaption&gt;image&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To solve this issue you have to thrust of the XAML Type Provider of this project. This you can do via the Visual Studio options:&lt;/p&gt;</description></item><item><title>Productive work environments for F# development (under windows)</title><link>http://blog.marko-apfel.de/posts/productive-work-environments-for-f-sharp-development-under-windows/</link><pubDate>Sat, 04 May 2013 07:30:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/productive-work-environments-for-f-sharp-development-under-windows/</guid><description>&lt;h2 id="ides-editors-"&gt;IDEs, Editors, ..&lt;/h2&gt;
&lt;p&gt;Here are my favorites in descend order&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/eng/downloads#d-express-web"&gt;Visual Studio Express 2012 for Web&lt;/a&gt;
yes! - it allows you free F# development, notably for libraries&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt;
again and again a wonderful tool!&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.icsharpcode.net/opensource/sd/"&gt;SharpDevelop&lt;/a&gt;
sometimes a little bit idiosyncratic&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.tryfsharp.org/Learn/getting-started"&gt;Online Scratchpad on TryFSharp.org&lt;/a&gt;
the fastest start …&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="additional-resources"&gt;Additional resources&lt;/h2&gt;
&lt;p&gt;Maybe the following packages are necessary or in minimum useful:&lt;/p&gt;</description></item><item><title>Sublime Text 2 – Package installation not possible, no package listed</title><link>http://blog.marko-apfel.de/posts/sublime-text-2-package-installation-not-possible-no-package-listed/</link><pubDate>Wed, 01 May 2013 06:18:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/sublime-text-2-package-installation-not-possible-no-package-listed/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;I tried to add the Emmet (fka Zen Coding) package to Sublime Text 2. But by running this “Install Package” (CTRL + SHIFT + p) command&lt;/p&gt;
&lt;p&gt;&lt;a href="image_2.png"&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/sublime-text-2-package-installation-not-possible-no-package-listed/image-thumb.png" alt="image" loading="lazy" decoding="async" title="image"&gt;&lt;figcaption&gt;image&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;no packages were displayed.&lt;/p&gt;</description></item><item><title>SharpDevelop, F#, missing “Send to F# Interactive” context menu</title><link>http://blog.marko-apfel.de/posts/sharpdevelop-f-sharp-missing-send-to-f-sharp-interactive-context-menu/</link><pubDate>Wed, 01 May 2013 05:15:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/sharpdevelop-f-sharp-missing-send-to-f-sharp-interactive-context-menu/</guid><description>&lt;h2 id="situation-problem"&gt;Situation, Problem&lt;/h2&gt;
&lt;p&gt;During playing a little bit with these &lt;a href="https://github.com/dmitry-a-morozov/fsharp-wpf-mvc-series"&gt;WPF MVC F#&lt;/a&gt; projects inside SharpDevelop I stumbled over the situation, that I could not send F# snippets to the interactive window. The menu was not available.&lt;/p&gt;</description></item><item><title>SharpDevelop, F#, “Please ensure that the F# compiler is installed on your computer.”</title><link>http://blog.marko-apfel.de/posts/sharpdevelop-f-sharp-please-ensure-that-the-f-sharp-compiler-is-installed-on-your-computer/</link><pubDate>Wed, 01 May 2013 04:18:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/sharpdevelop-f-sharp-please-ensure-that-the-f-sharp-compiler-is-installed-on-your-computer/</guid><description>&lt;h2 id="situation"&gt;Situation&lt;/h2&gt;
&lt;p&gt;My private machine has &lt;em&gt;Microsoft Visual Studio Express 2012&lt;/em&gt; for Windows Desktop. This Visual Studio edition doesn’t allow to develop with F#. So I installed additionally &lt;a href="http://www.icsharpcode.net/OpenSource/SD/Default.aspx"&gt;SharpDevelop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But it took longer as expected to get F# projects running in this environment.&lt;/p&gt;</description></item><item><title>Productive Toolset for C# Developer</title><link>http://blog.marko-apfel.de/posts/productive-toolset-for-c-sharp-developer/</link><pubDate>Wed, 24 Oct 2012 09:28:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/productive-toolset-for-c-sharp-developer/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Visual Studio&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReSharper&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agent Johnson&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agent Smith&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;StyleCop for ReSharper&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keymaps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SettingsManager&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Git Source Control Provider&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gist&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NuGet Package Manager&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NDepend&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Productivity Power Tools&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PowerCommands for Visual Studio&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PostSharp&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Indent Guides&lt;/p&gt;</description></item><item><title>Entity Framework: Connecting to a mdf user database file via localDB during script execution</title><link>http://blog.marko-apfel.de/posts/entity-framework-connecting-to-a-mdf-user-database-file-via-localdb-during-script-execution/</link><pubDate>Sun, 21 Oct 2012 12:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/entity-framework-connecting-to-a-mdf-user-database-file-via-localdb-during-script-execution/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;If you run the &lt;em&gt;Generate database from model&lt;/em&gt; wizard and execute the generated script the destination database could be the wrong one (for instance master of the SQL Server).&lt;/p&gt;
&lt;h2 id="solution"&gt;Solution&lt;/h2&gt;
&lt;p&gt;To use an own &lt;code&gt;mdf&lt;/code&gt; attachable user database some connection information must specified during script execution.&lt;/p&gt;</description></item><item><title>Entity Framework, Code First: where is the database?</title><link>http://blog.marko-apfel.de/posts/entity-framework-code-first-where-is-the-database/</link><pubDate>Sat, 20 Oct 2012 17:26:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/entity-framework-code-first-where-is-the-database/</guid><description>&lt;p&gt;With Entity Framework 5 in Visual Studio 2012 the code first feature could let you come to the question “Where is the automatically created database located?”&lt;/p&gt;
&lt;p&gt;I run in the question after changing the model which throws during the next run this error:&lt;/p&gt;</description></item><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>LINQ and ArcObjects</title><link>http://blog.marko-apfel.de/posts/linq-and-arcobjects/</link><pubDate>Wed, 12 Sep 2012 15:20:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/linq-and-arcobjects/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;LINQ (language integrated query) is a component of the Microsoft. NET Framework since version 3.5. It allows a SQL-like query to various data sources such as SQL, XML etc.&lt;/p&gt;
&lt;p&gt;Like SQL also LINQ to SQL provides a declarative notation of problem solving – i.e. you don’t need describe in detail how a task could be solved, you describe what to be solved at all. This frees the developer from error-prone iterator constructs.&lt;/p&gt;</description></item><item><title>Strange error “argument type ‘lambda expression’ is not assignable to parameter type ‘string’”</title><link>http://blog.marko-apfel.de/posts/strange-error-argument-type-lambda-expression-is-not-assignable-to-parameter-type-string/</link><pubDate>Sun, 01 Jul 2012 11:08:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/strange-error-argument-type-lambda-expression-is-not-assignable-to-parameter-type-string/</guid><description>&lt;p&gt;During playing with EF and LINQ I run in this UI-error:&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;argument type ‘lambda expression’ is not assignable to parameter type ‘string’
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="image_2.png"&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/strange-error-argument-type-lambda-expression-is-not-assignable-to-parameter-type-string/image_thumb.png" alt="image" loading="lazy" decoding="async" title="image"&gt;&lt;figcaption&gt;image&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Compiler themselves states:&lt;/p&gt;
&lt;p&gt;Cannot convert lambda expression to type &amp;lsquo;string&amp;rsquo; because it is not a delegate type.&lt;/p&gt;</description></item><item><title>Wise settings for Git</title><link>http://blog.marko-apfel.de/posts/wise-settings-for-git/</link><pubDate>Thu, 31 May 2012 11:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/wise-settings-for-git/</guid><description>&lt;p&gt;These settings reflecting my Git-environment. It a result of reading and trying several ideas of input from others.&lt;/p&gt;
&lt;h2 id="must-haves"&gt;Must-Haves&lt;/h2&gt;
&lt;h3 id="aliases"&gt;Aliases&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[alias]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ci = commit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; st = status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; co = checkout
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; oneline = log --pretty=oneline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; br = branch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; la = log --pretty=\&amp;#34;format:%ad %h (%an): %s\&amp;#34; --date=short
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; df = diff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dc = diff --cached
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lg = log -p
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lol = log --graph --decorate --pretty=oneline --abbrev-commit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ls = ls-files
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ign = ls-files -o -i --exclude-standard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="colors"&gt;Colors&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[color]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;ui&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;auto&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[color &amp;#34;branch&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yellow reverse
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; local = yellow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; remote = green&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[color &amp;#34;diff&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;meta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yellow bold
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; frag = magenta bold
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; old = red bold
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; new = green bold
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; whitespace = red reverse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[color &amp;#34;status&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;added&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;green
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; changed = red
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; untracked = cyan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="core"&gt;Core&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[core]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;autocrlf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; excludesfile = c:/Users/&amp;lt;user&amp;gt;/.gitignore
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; editor = &amp;#39;C:/Program Files (x86)/Notepad++/notepad++.exe&amp;#39; -multiInst -notabbar -nosession –noPlugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="nice-to-have"&gt;Nice to have&lt;/h2&gt;
&lt;h3 id="merge-and-diff"&gt;Merge and Diff&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[merge]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;kdiff3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[mergetool &amp;#34;kdiff3&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[mergetool &amp;#34;p4merge&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;c:/Program Files (x86)/Perforce Merge/p4merge.exe
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; cmd = p4merge \&amp;#34;$BASE\&amp;#34; \&amp;#34;$LOCAL\&amp;#34; \&amp;#34;$REMOTE\&amp;#34; \&amp;#34;$MERGED\&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; keepTemporaries = false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; trustExitCode = false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; keepBackup = false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[diff]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;guitool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;kdiff3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[difftool &amp;#34;kdiff3&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[difftool &amp;#34;p4merge&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;C:/Users/&amp;lt;user&amp;gt;/My Applications/Perforce Merge/p4merge.exe
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; cmd = \&amp;#34;p4merge.exe $LOCAL $REMOTE\&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Error while trying to run project: Unable to start program ‘…’. The endpoint was not reachable.</title><link>http://blog.marko-apfel.de/posts/error-while-trying-to-run-project-unable-to-start-program-the-endpoint-was-not-reachable/</link><pubDate>Tue, 20 Mar 2012 10:55:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/error-while-trying-to-run-project-unable-to-start-program-the-endpoint-was-not-reachable/</guid><description>&lt;p&gt;During playing with Entity Framework I got the error:&lt;/p&gt;
&lt;p&gt;“Error while trying to run project: Unable to start program ‘&amp;rsquo;…’.
The endpoint was not reachable.&lt;/p&gt;
&lt;p&gt;&lt;a href="image_4.png"&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/error-while-trying-to-run-project-unable-to-start-program-the-endpoint-was-not-reachable/image_thumb_1.png" alt="image" loading="lazy" decoding="async" title="image"&gt;&lt;figcaption&gt;image&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By running the project in Visual Studio. Outside VS were no problems.&lt;/p&gt;</description></item><item><title>Simian counts errors in Jenkins dashboard but shows in details “No violation found”</title><link>http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/</link><pubDate>Thu, 08 Dec 2011 16:46:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Jenkins dashboard shows following simian analysis:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/Simian.NoViolationFound.01.png" alt="Screenshot for Simian counts errors in Jenkins dashboard but shows in details “No violation found”" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;But after clicking one item I get:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/Simian.NoViolationFound.02.png" alt="Screenshot for Simian counts errors in Jenkins dashboard but shows in details “No violation found”" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&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>Interop effects by resolving and instantiating types with ArcObjects</title><link>http://blog.marko-apfel.de/posts/interop-effects-by-resolving-and-instantiating-types-with-arcobjects/</link><pubDate>Fri, 25 Nov 2011 14:10:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/interop-effects-by-resolving-and-instantiating-types-with-arcobjects/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;this code does not work&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ESRI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ArcGIS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Framework&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AppRefClass&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Activator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateInstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;but yet this code&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetTypeFromCLSID&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ESRI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ArcGIS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Framework&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AppRefClass&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;GUID&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Activator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateInstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="reason"&gt;Reason&lt;/h2&gt;
&lt;p&gt;In the first variant the runtime tries to cast to &lt;code&gt;AppRefClass&lt;/code&gt;. This is not possible.&lt;/p&gt;
&lt;p&gt;And in the second one, the runtime does not knows anything about &lt;code&gt;AppRefClass&lt;/code&gt;. So it leave it as &lt;code&gt;IUnknown&lt;/code&gt;.&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>xUnit runner eats system diagnostic output</title><link>http://blog.marko-apfel.de/posts/xunit-runner-eats-system-diagnostic-output/</link><pubDate>Mon, 07 Nov 2011 13:28:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/xunit-runner-eats-system-diagnostic-output/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;When using xUnit and constructs like Debug.WriteLine the &lt;em&gt;DbgView&lt;/em&gt;-tool does not show the written output anymore.&lt;/p&gt;
&lt;h2 id="solution"&gt;Solution&lt;/h2&gt;
&lt;p&gt;Add a new Listener – for example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Listeners&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;DefaultTraceListener&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>NuGet: Update to an older version of a package</title><link>http://blog.marko-apfel.de/posts/nuget-update-to-an-older-version-of-a-package/</link><pubDate>Fri, 04 Nov 2011 10:52:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/nuget-update-to-an-older-version-of-a-package/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;I must go back to an older package version (from 1.1.0.0 to 1.0.0.0) but the Package Manager Console does not allow this.&lt;/p&gt;
&lt;p&gt;With the command&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Update-Package EsriDE.Commons.System.Utils -Version 1.0.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I got the error:&lt;/p&gt;</description></item><item><title>Review SmartAssembly from Red Gate</title><link>http://blog.marko-apfel.de/posts/review-smartassembly-from-red-gate/</link><pubDate>Tue, 01 Nov 2011 14:34:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/review-smartassembly-from-red-gate/</guid><description>&lt;p&gt;As an GWB-influencer I had the chance to review SmartAssembly.&lt;/p&gt;
&lt;p&gt;Because obfuscation is an important part in protecting intellectual property this review chance was a good start for this. The first few clicks show that not only obfuscation could be made with SmartAssembly but also some other very interesting things.&lt;/p&gt;</description></item><item><title>"Failure has occurred while loading a type."</title><link>http://blog.marko-apfel.de/posts/failure-has-occurred-while-loading-a-type/</link><pubDate>Fri, 28 Oct 2011 12:08:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/failure-has-occurred-while-loading-a-type/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;During programming suddenly this error (&lt;code&gt;Failure has occurred while loading a type&lt;/code&gt;) was thrown by accessing a artifact of a referenced library.&lt;/p&gt;
&lt;p&gt;In such cases I take the assembly fusion logger &lt;em&gt;fuslogvw&lt;/em&gt; to search for problems of loading assemblies. Sometimes an old version from a not expected folder is binded. But all bindings were correct.&lt;/p&gt;</description></item><item><title>InternalsVisibleTo, PublicKey and PublicKeyToken</title><link>http://blog.marko-apfel.de/posts/internalsvisibleto-publickey-and-publickeytoken/</link><pubDate>Thu, 27 Oct 2011 14:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/internalsvisibleto-publickey-and-publickeytoken/</guid><description>&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;
&lt;p&gt;If you want to test the internals of a productive assembly you must mark the assembly with the InternalsVisibleTo-attribute. This attribute has only one constructor which needs the name of the testing assembly.&lt;/p&gt;</description></item><item><title>Template Method Pattern and constructors</title><link>http://blog.marko-apfel.de/posts/template-method-pattern-and-constructors/</link><pubDate>Sat, 15 Oct 2011 14:18:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/template-method-pattern-and-constructors/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Often you want to have the possibility to call a special abstract or virtual &lt;code&gt;Initialize&lt;/code&gt;-method in a constructor of a base class to set individual initializing things in an override of this Initialize-method in a derived class.&lt;/p&gt;</description></item><item><title>Modify properties of “Git Bash Here” shortcut in Explorer and Console Enhancement Project</title><link>http://blog.marko-apfel.de/posts/modify-properties-of-git-bash-here-shortcut-in-explorer-and-console-enhancement-project/</link><pubDate>Fri, 19 Aug 2011 06:10:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/modify-properties-of-git-bash-here-shortcut-in-explorer-and-console-enhancement-project/</guid><description>&lt;h2 id="essentials"&gt;Essentials&lt;/h2&gt;
&lt;p&gt;Run the bash for this as administrator. The shortcut is located in the Git installation folder. &amp;ldquo;%ProgramFiles(x86)%\Git”.&lt;/p&gt;
&lt;p&gt;Good Setting for the layout are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Screnn buffer size&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Width: 160&lt;/li&gt;
&lt;li&gt;Height: 3000&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows size&lt;/p&gt;</description></item><item><title>Performance-Analyzing of log4net regarding creation of new logger vs. taking an existing one</title><link>http://blog.marko-apfel.de/posts/performance-analyzing-of-log4net-regarding-creation-of-new-logger-vs-taking-an-existing-one/</link><pubDate>Tue, 02 Aug 2011 10:49:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/performance-analyzing-of-log4net-regarding-creation-of-new-logger-vs-taking-an-existing-one/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;During playing with AOP framework PostSharp I thought about the technique to weave the logger instances inside the code by using the CompileTimeInitialize–method. Unfortunately my logging-stuff must be serializable. This is not given. So I must use the other weaving point and access my Loggers.&lt;/p&gt;</description></item><item><title>Be carefully by using PostSharp regarding license choice</title><link>http://blog.marko-apfel.de/posts/be-carefully-by-using-postsharp-regarding-license-choice/</link><pubDate>Mon, 01 Aug 2011 11:25:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/be-carefully-by-using-postsharp-regarding-license-choice/</guid><description>&lt;h2 id="initial-situation"&gt;Initial situation&lt;/h2&gt;
&lt;p&gt;If you download and install &lt;em&gt;PostSharp&lt;/em&gt; you run the professional edition in trial mode if you don’t configure additional things – also if you want to run the community edition.&lt;/p&gt;</description></item><item><title>Correcting wrong AssemblyInfo Copyright and Vendor-information</title><link>http://blog.marko-apfel.de/posts/correcting-wrong-assemblyinfo-copyright-and-vendor-information/</link><pubDate>Mon, 01 Aug 2011 09:53:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/correcting-wrong-assemblyinfo-copyright-and-vendor-information/</guid><description>&lt;h2 id="initial-situation"&gt;Initial situation&lt;/h2&gt;
&lt;p&gt;Normally all of our installations are registered to the company name.&lt;/p&gt;
&lt;p&gt;But now we have the effect that some (developer) tool seems to overwrite this registry entries. That results in the following:&lt;/p&gt;</description></item><item><title>NuGet-Package-Management mit ArcObjects</title><link>http://blog.marko-apfel.de/posts/nuget-package-management-mit-arcobjects/</link><pubDate>Fri, 22 Jul 2011 10:48:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/nuget-package-management-mit-arcobjects/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Wie gehen Sie in dieser Situation vor:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Eine von Ihnen verwendete .NET-Drittbibliothek liegt in einer neuen Version vor und Sie müssen die Abhängigkeiten in all Ihren Projekte aktualisieren.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Je nach Projekt und Notwendigkeit hatten wir bei ESRI Deutschland dafür bisher u.a. folgende Lösungs-Szenarien:&lt;/p&gt;</description></item><item><title>Using NuGet in a MSBuild-target to have the packages at the last stand</title><link>http://blog.marko-apfel.de/posts/using-nuget-in-a-msbuild-target-to-have-the-packages-at-the-last-stand/</link><pubDate>Wed, 06 Jul 2011 18:15:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/using-nuget-in-a-msbuild-target-to-have-the-packages-at-the-last-stand/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Encouraged from the article “&lt;a href="http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages"&gt;Using NuGet without committing packages to source control&lt;/a&gt;” I decided to wrap the NuGet-call in a MSBuild target instead of using a pre-build event.&lt;/p&gt;
&lt;p&gt;Because we also trigger FxCop and StyleCop via targets this fits better in our project management.&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>About trials, spikes, samples, prototypes and clean code</title><link>http://blog.marko-apfel.de/posts/about-trials-spikes-samples-prototypes-and-clean-code/</link><pubDate>Mon, 04 Jul 2011 14:38:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/about-trials-spikes-samples-prototypes-and-clean-code/</guid><description>&lt;p&gt;Writing clean code is only possible if you are known with the uses technology. Often during a development process this level must initially be reached.&lt;/p&gt;
&lt;p&gt;To distinguish the levels of understanding I guess separate folders under the DevTree:&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>Let ReSharper and Code Contracts work together</title><link>http://blog.marko-apfel.de/posts/let-resharper-and-code-contracts-work-together/</link><pubDate>Sun, 05 Jun 2011 23:55:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/let-resharper-and-code-contracts-work-together/</guid><description>&lt;p&gt;&lt;em&gt;ReSharper&lt;/em&gt; by default does not recognize &lt;code&gt;Contract.Requires&lt;/code&gt; as an annotation hint, that the proofed condition furthermore is &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So it comes to the effect, that using the following contract definition causes ReSharper to squiggle the next access and output a wrong hint:&lt;/p&gt;</description></item><item><title>Let ReSharper and xUnit work together</title><link>http://blog.marko-apfel.de/posts/let-resharper-and-xunit-work-together/</link><pubDate>Sun, 05 Jun 2011 13:41:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/let-resharper-and-xunit-work-together/</guid><description>&lt;h2 id="getting-the-ressources"&gt;Getting the ressources&lt;/h2&gt;
&lt;p&gt;First at all download&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://xunit.codeplex.com/releases/"&gt;xUnit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xunitcontrib.codeplex.com/releases/"&gt;xUnit Contrib ReSharper&lt;/a&gt;&lt;br&gt;
This gives you a bridge between ReSharper functionality and your XUnit coding.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-und-configuration"&gt;Installation und Configuration&lt;/h2&gt;
&lt;p&gt;Unzip both archives.&lt;/p&gt;
&lt;h3 id="xunit-part"&gt;xUnit part&lt;/h3&gt;
&lt;h4 id="configure-the-code-to-use-xunit"&gt;Configure the code to use xUnit&lt;/h4&gt;
&lt;p&gt;Normally I prefer a single checkout point for my developing solution – this whole bundle I name DevTree. One of the top folders in the hierarchy of this DevTree is a lib-Folder. Beneath this folder all of the 3rd party libs which I use in my solution are located – all of them in an own folder. So I copy &lt;code&gt;xunit.dll&lt;/code&gt; to a folder &lt;code&gt;&amp;lt;DevTree-Root&amp;gt;\lib\xUnit&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Code Contracts: For unit test a manual rebuild is needed for toggeling “runtime checking”</title><link>http://blog.marko-apfel.de/posts/code-contracts-for-unit-test-a-manual-rebuild-is-needed-for-toggeling-runtime-checking/</link><pubDate>Sat, 04 Jun 2011 01:19:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/code-contracts-for-unit-test-a-manual-rebuild-is-needed-for-toggeling-runtime-checking/</guid><description>&lt;p&gt;Toggeling the checkbox &lt;em&gt;Perform Runtime Contract Checking&lt;/em&gt; lets run the next application start with the new set option. But for unit test an explicit new build will apply the option for the next run.&lt;/p&gt;</description></item><item><title>Ressourcen für Esri 2011 Präsentationen und Code-Beispiele</title><link>http://blog.marko-apfel.de/posts/ressourcen-fur-esri-2011-prasentationen-und-code-beispiele/</link><pubDate>Tue, 31 May 2011 15:56:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/ressourcen-fur-esri-2011-prasentationen-und-code-beispiele/</guid><description>&lt;p&gt;Aufgrund mehrfacher Nachfrage, hier nochmal zusammengefasst die Links zu Präsentationen und Code-Beispielen von Vorträgen und Workshop mit meinem Mitwirken:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://prezi.com/ntphelyvygsf"&gt;ESRI 2011 - Workshop &amp;ldquo;Professionelle Softwareentwicklung mit ArcObjects&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://prezi.com/cje6dz9uxxnd"&gt;ESRI 2011 - Customizing ArcGIS Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://prezi.com/bsmod7x8hivk"&gt;ESRI 2011 - ArcObjects 10&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Sourcen finden sich unter:&lt;/p&gt;</description></item><item><title>Break the mechanism, that GAC-assemblies could only bind to other GAC-assemblies</title><link>http://blog.marko-apfel.de/posts/break-the-mechanism-that-gac-assemblies-could-only-bind-to-other-gac-assemblies/</link><pubDate>Tue, 31 May 2011 08:30:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/break-the-mechanism-that-gac-assemblies-could-only-bind-to-other-gac-assemblies/</guid><description>&lt;p&gt;Till yet I thought, that if you have an assembly in the GAC all referenced assemblies must also be in the GAC. So a break of this GAC-assembly resolving chain is impossible.&lt;/p&gt;</description></item><item><title>Umfrage-Auswertung zum Workshop “Professionelle Softwareentwicklung mit ArcObjects” auf der ESRI 2011</title><link>http://blog.marko-apfel.de/posts/umfrage-auswertung-zum-workshop-professionelle-softwareentwicklung-mit-arcobjects-auf-der-esri-2011/</link><pubDate>Fri, 27 May 2011 04:04:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/umfrage-auswertung-zum-workshop-professionelle-softwareentwicklung-mit-arcobjects-auf-der-esri-2011/</guid><description>&lt;p&gt;Als erstes möchten Jochen und ich uns bei euch Teilnehmern bedanken für das große positive Feedback zu diesem Workshop. Das waren sicher für uns alle 3 sehr spannende Stunden – für euch im technischen Inhalt und für uns in der Frage euren Geschmack zu treffen. Ein derartiger Workshop war eine Premiere für Esri im Rahmen der GIS Konferenz - und eure Einwertung kann man durchaus als einen Arbeitsauftrag an uns auffassen diesbzgl am Ball zu bleiben.&lt;/p&gt;</description></item><item><title>Suppressing Add-in-registration task during build process</title><link>http://blog.marko-apfel.de/posts/suppressing-add-in-registration-task-during-build-process/</link><pubDate>Mon, 16 May 2011 07:17:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/suppressing-add-in-registration-task-during-build-process/</guid><description>&lt;p&gt;If you develop ArcGIS Add-ins with Visual Studio under limited permissions you get during the build process an error, that the stuff could not be registered.&lt;/p&gt;
&lt;p&gt;Normally its enough to run one times this build as an admin. Then all needed information are set and also taken for users with limited access.&lt;/p&gt;</description></item><item><title>Get Keymaps for ReSharper running</title><link>http://blog.marko-apfel.de/posts/get-keymaps-for-resharper-running/</link><pubDate>Thu, 12 May 2011 06:27:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/get-keymaps-for-resharper-running/</guid><description>&lt;p&gt;&lt;em&gt;Keymaps for ReSharper&lt;/em&gt; is a nice tool and allows the user easily to learn short cuts of ReSharper.&lt;/p&gt;
&lt;p&gt;Unfortunately, the last update is from january 2010. So the installation folder of the installing script (&lt;code&gt;Install.Keymaps.for.ReSharper.cmd&lt;/code&gt;) is not up to date. If you run it no expected new menu item “Show Keymap” under the ReSharper-menu is listed.&lt;/p&gt;</description></item><item><title>Suppressing FxCop/Code Analysis warnings in Config.Designer.cs of Esri Addins</title><link>http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/</link><pubDate>Wed, 11 May 2011 13:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/</guid><description>&lt;p&gt;Addins in ArcGIS Desktop 10 uses tool generated code of the &lt;code&gt;Config.esriaddinx&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Have a look at the properties you will see this tool – named &lt;code&gt;ArcGISAddInHostGenerator&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/suppressing-fxcop-code-analysis-warnings-in-config-designer-cs-of-esri-addins/ConfigEsriaddinx.CustomTool.png" alt="Screenshot for Suppressing FxCop/Code Analysis warnings in Config.Designer.cs of Esri Addins" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;</description></item><item><title>Castle Windsor: order of configurations and resulting resolvings</title><link>http://blog.marko-apfel.de/posts/castle-windsor-order-of-configurations-and-resulting-resolvings/</link><pubDate>Tue, 03 May 2011 05:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/castle-windsor-order-of-configurations-and-resulting-resolvings/</guid><description>&lt;p&gt;If different implementations for the same interface are specified without named keys, then a resolving is made in order of the configurations. So the first fitting implementation is taken.&lt;/p&gt;
&lt;p&gt;Different implementations for the same interface is a typical scenario for patterns like “chain of responsibility” and “decorator”. If you want to describe such a chain you could use the next handler as a constructor- parameter in the actual one.&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>Mercurial behind a proxy</title><link>http://blog.marko-apfel.de/posts/mercurial-behind-a-proxy/</link><pubDate>Mon, 24 Jan 2011 17:57:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/mercurial-behind-a-proxy/</guid><description>&lt;p&gt;For getting data with using a proxy simply modify the command with included &lt;code&gt;--config&lt;/code&gt;-parameter with proxy-information.&lt;/p&gt;
&lt;p&gt;So the original:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hg clone https://ralfwscratchpad.googlecode.com/hg/ ralfwscratchpad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;transforms to:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hg --config http_proxy.host=proxy:8080 clone https://ralfwscratchpad.googlecode.com/hg/ ralfwscratchpad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Running CopySourceAsHtml Add-in under Visual Studio 2010</title><link>http://blog.marko-apfel.de/posts/running-copysourceashtml-add-in-under-visual-studio-2010/</link><pubDate>Sun, 02 Jan 2011 10:41:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/running-copysourceashtml-add-in-under-visual-studio-2010/</guid><description>&lt;p&gt;Until now &lt;a href="http://copysourceashtml.codeplex.com/"&gt;CopySourceAsHtml&lt;/a&gt; only supports &lt;em&gt;Visual Studio 2008&lt;/em&gt; out of the box.&lt;/p&gt;
&lt;p&gt;But it is no problem to pimp up the config-file for supporting Visual Studio 2010.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy all three files to &lt;code&gt;%userprofile%\Documents\Visual Studio 2010\Addins&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;em&gt;CopySourceAsHtml.AddIn&lt;/em&gt; in a text editor and change both lines with&lt;br&gt;
&lt;code&gt;&amp;lt;Version&amp;gt;9.0&amp;lt;/Version&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;lt;Version&amp;gt;10.0&amp;lt;/Version&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run Visual Studio 2010 and &lt;em&gt;CopySourceAsHtml&lt;/em&gt; works fine&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Differences by pasting formatted text in Word and OneNote</title><link>http://blog.marko-apfel.de/posts/differences-by-pasting-formatted-text-in-word-and-onenote/</link><pubDate>Sun, 02 Jan 2011 08:54:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/differences-by-pasting-formatted-text-in-word-and-onenote/</guid><description>&lt;p&gt;By pasting formatted text in Word and OneNote both applications act a little bit different. Meanwhile Word supports RTF-formatting OneNote does not.&lt;/p&gt;
&lt;p&gt;OneNote could only handle HTML-formatting.&lt;/p&gt;
&lt;p&gt;In combination with presenting source code for Visual Studio the Add-in &lt;a href="http://copysourceashtml.codeplex.com/"&gt;CopySourceAsHtml&lt;/a&gt; is available.&lt;/p&gt;</description></item><item><title>Alternatives for the Snippet Compiler</title><link>http://blog.marko-apfel.de/posts/alternatives-for-the-snippet-compiler/</link><pubDate>Sun, 02 Jan 2011 01:32:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/alternatives-for-the-snippet-compiler/</guid><description>&lt;p&gt;It seems that the &lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;Snippet Compiler&lt;/a&gt; is not maintained anymore.&lt;/p&gt;
&lt;p&gt;So I need an alternative – also for getting syntax highlighting for code in publications. Preferable with the possibility to conserve this highlighting by copying selections to clipboard. Snippet Compiler does not allows this for selections – only by exporting the whole file content to clipboard with HTML- or RTF-formatting (File &amp;gt; Export &amp;gt; HTML to clipboard respectively RTF to clipboard).&lt;/p&gt;</description></item><item><title>Installation experiences with NDepend under Win7/64 with restricted user permissions</title><link>http://blog.marko-apfel.de/posts/installation-experiences-with-ndepend-under-win7-64-with-restricted-user-permissions/</link><pubDate>Mon, 27 Dec 2010 19:10:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/installation-experiences-with-ndepend-under-win7-64-with-restricted-user-permissions/</guid><description>&lt;p&gt;Today Patrick from NDepend gave me a new license for his static code analysis tool &lt;em&gt;NDepend&lt;/em&gt; for my fresh machine with Win7/64. This platform is new for me, so some things are different to Win XP. Maybe that till yet some of these things are not well enough understood from me. So I stepped in some traps.&lt;/p&gt;</description></item><item><title>Castle Windsor and .NET Framwork 3.5 Client Profil</title><link>http://blog.marko-apfel.de/posts/castle-windsor-and-net-framwork-3-5-client-profil/</link><pubDate>Fri, 24 Sep 2010 17:32:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/castle-windsor-and-net-framwork-3-5-client-profil/</guid><description>&lt;p&gt;Today I have tried to use a &lt;em&gt;Castle Windsor&lt;/em&gt; in an project based at &lt;em&gt;.NET Framwork 3.5 Client Profile&lt;/em&gt;. This is not possible because somewhere in the Castle Windsor assembly a reference to &lt;code&gt;System.Web&lt;/code&gt; is made.&lt;/p&gt;</description></item><item><title>Experiences with the new Add-In concept of ArcGIS 10</title><link>http://blog.marko-apfel.de/posts/experiences-with-the-new-add-in-concept-of-arcgis-10/</link><pubDate>Wed, 08 Sep 2010 12:08:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/experiences-with-the-new-add-in-concept-of-arcgis-10/</guid><description>&lt;h2 id="namespaces-of-components-in-an-add-in"&gt;Namespaces of components in an Add-In&lt;/h2&gt;
&lt;p&gt;It seems that there is only one namespace for all components in an Add-In allowed. The namespace is defined over an attribute of the tag &lt;code&gt;&amp;lt;AddIn&amp;gt;&lt;/code&gt;. And this tag is allowed only once per &lt;code&gt;config.esriaddinx&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Set ApartmentState for ArcObjects-logic in separate threads</title><link>http://blog.marko-apfel.de/posts/set-apartmentstate-for-arcobjects-logic-in-separate-threads/</link><pubDate>Wed, 08 Sep 2010 10:54:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/set-apartmentstate-for-arcobjects-logic-in-separate-threads/</guid><description>&lt;h2 id="problem-context"&gt;Problem context&lt;/h2&gt;
&lt;p&gt;We use a &lt;code&gt;backgroundworker&lt;/code&gt; to load &lt;code&gt;.MXD&lt;/code&gt; documents from several places of the system and extract meta data and thumbnails which a GUI component shows in an asynchronous way.&lt;/p&gt;
&lt;p&gt;The unit tests for this logic throws an exception during the access the thumbnail:&lt;/p&gt;</description></item><item><title>Explorer context menu to create a blank Visual Studio solution</title><link>http://blog.marko-apfel.de/posts/explorer-context-menu-to-create-a-blank-visual-studio-solution/</link><pubDate>Fri, 03 Sep 2010 15:25:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/explorer-context-menu-to-create-a-blank-visual-studio-solution/</guid><description>&lt;p&gt;Starting a new Visual Studio solution through the IDE is often too complex and time wasting.&lt;/p&gt;
&lt;p&gt;Other programs allows per default to create a blank document with the explorer context menu. Why not offer this functionality for Visual Studio?&lt;/p&gt;</description></item><item><title>Diverse Shortcuts</title><link>http://blog.marko-apfel.de/posts/diverse-shortcuts/</link><pubDate>Fri, 27 Aug 2010 10:45:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/diverse-shortcuts/</guid><description>&lt;h2 id="visual-studio--resharper"&gt;Visual Studio / ReSharper&lt;/h2&gt;
&lt;h3 id="new-to-learn-or-learn"&gt;New to learn or learn&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SHIFT + ALT + PgDown/PgUp&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
Find next/previous error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + PgDown/PgUp&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
Find next/previous suggestion/hint&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="editing"&gt;Editing&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ALT + ENTER&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.QickFix__&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Show quick fixes and content actions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + D&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.DuplicateText&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Duplicate line or selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + K, S&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.SurroundWith&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Code Snippet Picker (wrap around)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + ALT + RightArrow/LeftArrow&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.ExtendSelection&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Extends/shrinks selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + K, X&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.InsertSnippet&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Code Snippet Picker (insert)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + ALT + UpArrow/DownArrow&lt;/code&gt; — &lt;strong&gt;R#, Move Method (up/down)&lt;/strong&gt;&lt;br&gt;
Moves method above or down to the previous or next method&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + M, O&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.CollapseToDefinitions&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Collapses existing regions and types&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + M, L&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.ToggleAllOutlining&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Fully collapses and expands regions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + M, M&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.Toggle-OutliningExpansion&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Collapses and expands actual region&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + M, P&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.StopOutlining&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Expands regions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + V&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.CycleClipboardRing&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Pastes from the Clipboard ring&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + H&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.ReplaceInFiles&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Replace in files&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="window-handling"&gt;Window Handling&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SHIFT + ALT + ENTER&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;View.FullScreen&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Full screen mode&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + ALT + DownArrow&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Window.ShowEzMDIFileList&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Lists all open documents&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + ENTER&lt;/code&gt; — &lt;strong&gt;VS&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Properties&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + TAB&lt;/code&gt; — &lt;strong&gt;?&lt;/strong&gt;&lt;br&gt;
Navigates through recent files&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="intellisense"&gt;IntelliSense&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + SPACE&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.CompleteWord&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Completes current word&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + SPACE&lt;/code&gt; — &lt;strong&gt;?, &lt;code&gt;Edit.ParameterInfo&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Displays method parameter infos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + J&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.ListMembers&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Invokes completion list&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + K, I&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.QuickInfo&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Displays complete declaration&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="refactor"&gt;Refactor&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, R&lt;/code&gt; or &lt;code&gt;F2&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.Rename&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Rename&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, M&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.ExtractMethod&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Extract Method&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, E&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.EncapsulateField&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Encapsulate Field&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, F&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.IntroduceField&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Introduce Field&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, I&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.ExtractInterface&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Extract Interface&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + DEL&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.SafeDelete&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Safe Delete&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, P&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.PromoteLocalVariabletoParameter&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + R, V&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Refactor.RemoveParameters&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="debugging"&gt;Debugging&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + F10&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Debug.RunToCursor&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Run to Cursor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + F11&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Debug.StepOut&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + F5&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Debug.StopDebugging&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F9&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Debug.ToggleBreakpoint&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Set/remove breakpoint&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + F9&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Debug.EnableBreakpoint&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Disable/enable breakpoint&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL&lt;/code&gt; — &lt;strong&gt;VS&lt;/strong&gt;&lt;br&gt;
Make Datatip Transparent&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="build"&gt;Build&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;F6&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Build.BuildSolution&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Builds all the projects&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + F6&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Build.BuildSelection&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Builds the selected project&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="navigation"&gt;Navigation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SHIFT + ALT + L&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.LocateInSolutionExplorer&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Locate in Solution Explorer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + F12&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.FindAllReferences&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
List of all references for symbol&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F12&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.GoToDefinition&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CTRL + LMB&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
Navigates to declaration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + ,&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;ReSharper.GotoRecentEdits&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
View recent edits&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F8&lt;/code&gt; — &lt;strong&gt;?, &lt;code&gt;Edit.GoToNextLocation&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Next item (Task List, Find Results)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + I&lt;/code&gt; — &lt;strong&gt;?, &lt;code&gt;Edit.IncrementalSearch&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Activates incremental search&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + -&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;View.NavigateBackward&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Previously edited code&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F7&lt;/code&gt; — &lt;strong&gt;R#, &lt;code&gt;View.ViewCode/ViewDesigner&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Switch to code or design view&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + G&lt;/code&gt; — &lt;strong&gt;?, &lt;code&gt;Edit.GoTo&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Opens &amp;ldquo;Go To Line&amp;rdquo; dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + ALT + L&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
Locate in Solution Explorer&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="important"&gt;Important&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + C&lt;/code&gt; — &lt;strong&gt;VS/R#, &lt;code&gt;Edit.Copy&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Copy line or selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + X&lt;/code&gt; — &lt;strong&gt;VS/R#, &lt;code&gt;Edit.Cut&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Cut line or selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + ALT + /&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CTRL + K, C&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.CommentSelection&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Inserts &lt;code&gt;//&lt;/code&gt; at the beginning&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + ALT + /&lt;/code&gt; — &lt;strong&gt;R#&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CTRL + K, U&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.UncommentSelection&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Removes the &lt;code&gt;//&lt;/code&gt; at the beginning&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + /&lt;/code&gt; — &lt;strong&gt;?, Block comment&lt;/strong&gt;&lt;br&gt;
Inserts &lt;code&gt;/*&lt;/code&gt; at the beginning and &lt;code&gt;*/&lt;/code&gt; at the end&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + K, D&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.FormatDocument&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Formats indentation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + .&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;View.ShowSmartTag&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Open smart tag menu&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + F&lt;/code&gt; — &lt;strong&gt;VS, &lt;code&gt;Edit.FindInFiles&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Find in files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + 8&lt;/code&gt; — &lt;strong&gt;R#, Code analysis on/off&lt;/strong&gt;&lt;br&gt;
Enable/disable code analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="word"&gt;Word&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ALT + V, U&lt;/code&gt;&lt;br&gt;
Full screen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="outlook"&gt;Outlook&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + R&lt;/code&gt;&lt;br&gt;
Reply message&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + F&lt;/code&gt;&lt;br&gt;
Forward message&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + M&lt;/code&gt;&lt;br&gt;
New message&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + K&lt;/code&gt;&lt;br&gt;
Check names&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + Backspace&lt;/code&gt;&lt;br&gt;
Delete the previous word&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + ENTER&lt;/code&gt;&lt;br&gt;
Send message&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + J&lt;/code&gt;&lt;br&gt;
Move to the Subject field&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + 1&lt;/code&gt;&lt;br&gt;
Go to mail&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + 2&lt;/code&gt;&lt;br&gt;
Go to calendar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + F4&lt;/code&gt;&lt;br&gt;
Close current window&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WIN + Anfangsbuchstabe&lt;/code&gt; or &lt;code&gt;CTRL + ESC + Anfangsbuchstabe&lt;/code&gt;&lt;br&gt;
Rotiert im expandierten Startmenü zwischen den entsprechenden Treffern&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + 1 .. 9&lt;/code&gt;&lt;br&gt;
Startet das jeweilige Programm aus der Taskleiste unten – beziehungsweise minimiert es oder stellt es wieder her&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + UpArrow&lt;/code&gt; / &lt;code&gt;WIN + DownArrow&lt;/code&gt;&lt;br&gt;
Maximize current window / Restore down or minimize current window&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + LeftArrow&lt;/code&gt; / &lt;code&gt;WIN + RightArrow&lt;/code&gt;&lt;br&gt;
Dock the current window to the left or right half of the screen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + SHIFT + LeftArrow/RightArrow&lt;/code&gt;&lt;br&gt;
Verschiebt das Bild auf den linken bzw. rechten Bildschirm&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + HOME&lt;/code&gt;&lt;br&gt;
Minimize all but the current window&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + SPACE&lt;/code&gt;&lt;br&gt;
Makes all windows transparent so you can see through to the desktop&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + SHIFT + UpArrow/DownArrow&lt;/code&gt;&lt;br&gt;
Maximize vertical size / Restore vertical size&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + P&lt;/code&gt;&lt;br&gt;
Presentation mode&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + X&lt;/code&gt;&lt;br&gt;
Mobility centre with enhanced options&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + BREAK&lt;/code&gt;&lt;br&gt;
Displays system properties&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WIN + #&lt;/code&gt;&lt;br&gt;
Quicklaunch&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WINDOWS + R&lt;/code&gt;&lt;br&gt;
Open Run dialog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + N&lt;/code&gt;&lt;br&gt;
Opens a new Explorer window&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + N&lt;/code&gt;&lt;br&gt;
Creates a new folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHIFT + CTRL + Click at application&lt;/code&gt;&lt;br&gt;
Start program in admin mode&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="chrome--srware-iron"&gt;Chrome / SRWare Iron&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL + PgDown&lt;/code&gt; / &lt;code&gt;CTRL + PgUp&lt;/code&gt;&lt;br&gt;
Rotiert durch die Reiter&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + 1&lt;/code&gt; to &lt;code&gt;CTRL + 8&lt;/code&gt;&lt;br&gt;
Switches to the tab at the specified position number on the tab strip&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + LMB-Click&lt;/code&gt;&lt;br&gt;
Open link in new tab and switches to new tab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT + HOME&lt;/code&gt;&lt;br&gt;
Open homepage in current window&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F6&lt;/code&gt;&lt;br&gt;
Activate and highlight address bar for typing new stuff&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SPACE&lt;/code&gt;&lt;br&gt;
Scrolls down&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F11&lt;/code&gt;&lt;br&gt;
Fullscreen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + SHIFT + T&lt;/code&gt;&lt;br&gt;
Reopens last closed tab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + W&lt;/code&gt; or &lt;code&gt;CTRL + F4&lt;/code&gt;&lt;br&gt;
Closes the current tab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + J&lt;/code&gt;&lt;br&gt;
Open download page&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Interpretations of F.I.R.S.T.</title><link>http://blog.marko-apfel.de/posts/interpretations-of-f-i-r-s-t/</link><pubDate>Mon, 19 Jul 2010 14:49:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/interpretations-of-f-i-r-s-t/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast&lt;/strong&gt;&lt;br&gt;
Many per second&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent&lt;/strong&gt;&lt;br&gt;
Ability to to run test cases in any order&lt;br&gt;
&lt;strong&gt;Isolated&lt;/strong&gt;&lt;br&gt;
only one aspect per test case –&amp;gt; Failure reasons could better be identified&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repeatable&lt;/strong&gt;&lt;br&gt;
Execution order does no matter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-validating&lt;/strong&gt;&lt;br&gt;
No manual evaluation required&lt;br&gt;
&lt;strong&gt;Small&lt;/strong&gt;&lt;br&gt;
Easy to understand, evolvable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparent&lt;/strong&gt;&lt;br&gt;
purpose of test case should be clear&lt;br&gt;
&lt;strong&gt;Timely&lt;/strong&gt;&lt;br&gt;
Written before/during code&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Event Naming Guidelines</title><link>http://blog.marko-apfel.de/posts/event-naming-guidelines/</link><pubDate>Wed, 14 Jul 2010 08:47:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/event-naming-guidelines/</guid><description>&lt;h2 id="rules"&gt;Rules&lt;/h2&gt;
&lt;p&gt;The following rules outline the naming guidelines for events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Pascal case.&lt;/li&gt;
&lt;li&gt;Do not use Hungarian notation.&lt;/li&gt;
&lt;li&gt;Use an EventHandler suffix on event handler names.&lt;/li&gt;
&lt;li&gt;Specify two parameters named sender and e. The sender parameter represents the object that raised the event. The sender parameter is always of type object, even if it is possible to use a more specific type. The state associated with the event is encapsulated in an instance of an event class named e. Use an appropriate and specific event class for the e parameter type.&lt;/li&gt;
&lt;li&gt;Name an event argument class with the EventArgs suffix.&lt;/li&gt;
&lt;li&gt;Consider naming events with a verb. For example, correctly named event names include Clicked, Painting, and DroppedDown.&lt;/li&gt;
&lt;li&gt;Use a gerund (the &amp;ldquo;ing&amp;rdquo; form of a verb) to create an event name that expresses the concept of pre-event, and a past-tense verb to represent post-event. For example, a Close event that can be canceled should have a Closing event and a Closed event. Do not use the BeforeXxx/AfterXxx naming pattern.&lt;/li&gt;
&lt;li&gt;Do not use a prefix or suffix on the event declaration on the type. For example, use Close instead of OnClose.&lt;/li&gt;
&lt;li&gt;In general, you should provide a protected method called OnXxx on types with events that can be overridden in a derived class. This method should only have the event parameter e, because the sender is always the instance of the type.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;from: &lt;a href="http://msdn.microsoft.com/en-us/library/h0eyck3s(VS.71).aspx"&gt;.NET Framework General Reference - Event Naming Guidelines&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Verwenden von partiellen Klassen für COM-Belange</title><link>http://blog.marko-apfel.de/posts/verwenden-von-partiellen-klassen-fur-com-belange/</link><pubDate>Mon, 12 Jul 2010 15:16:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/verwenden-von-partiellen-klassen-fur-com-belange/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Schon im Whitepaper „Auszeichnung von COM-Kategorien an .NET-Klassen mittels Attributen und deren Verwendung für Setup-Builds“ [1] habe ich deutlich gemacht warum das Verwenden von COM-Registrierungsfunktionen ein suboptimales Programmierpattern ist. Knackpunkt sind die Verstöße gegen SOC (separation of concerns) [2] und SRP (single responsibility principle) [3].&lt;/p&gt;</description></item><item><title>Default installation for developer machines</title><link>http://blog.marko-apfel.de/posts/default-installation-for-developer-machines/</link><pubDate>Mon, 12 Jul 2010 12:00:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/default-installation-for-developer-machines/</guid><description>&lt;h2 id="ide"&gt;IDE&lt;/h2&gt;
&lt;h3 id="must-have"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2008&lt;/li&gt;
&lt;li&gt;Visual Studio 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sharp Develop&lt;/li&gt;
&lt;li&gt;Eclipse&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="editor"&gt;Editor&lt;/h2&gt;
&lt;h3 id="must-have-1"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Editor with high functionality and high usability
(like WScite, UltraEdit, PSPad, ..)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have-1"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft XML Notepad 2007&lt;/li&gt;
&lt;li&gt;Notepad++&lt;/li&gt;
&lt;li&gt;Windows Live Writer&lt;/li&gt;
&lt;li&gt;WScite&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="visual-studio-add-ins"&gt;Visual Studio Add-Ins&lt;/h2&gt;
&lt;h3 id="must-have-2"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;AnkhSvn&lt;/li&gt;
&lt;li&gt;GhostDoc&lt;/li&gt;
&lt;li&gt;PowerCommands&lt;/li&gt;
&lt;li&gt;PowerToys for Visual Studio&lt;/li&gt;
&lt;li&gt;ReSharper&lt;/li&gt;
&lt;li&gt;VsCommands&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have-2"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CopySourceAsHtml&lt;/li&gt;
&lt;li&gt;Clone Detective for Visual Studio&lt;/li&gt;
&lt;li&gt;CR_Documentor, Documentor&lt;/li&gt;
&lt;li&gt;Agent Johnson (R# Plugin)&lt;/li&gt;
&lt;li&gt;Agent Smith (R# Plugin)&lt;/li&gt;
&lt;li&gt;Source Code Outliner&lt;/li&gt;
&lt;li&gt;StyleCop for ReSharper (R# Plugin)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="developing-tools"&gt;Developing Tools&lt;/h2&gt;
&lt;h3 id="must-have-3"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DbgView&lt;/li&gt;
&lt;li&gt;Enterprise Architect&lt;/li&gt;
&lt;li&gt;Reflector&lt;/li&gt;
&lt;li&gt;WinMerge&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have-3"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DXCore (u.a benötigt für Documentor)&lt;/li&gt;
&lt;li&gt;FusLogVw&lt;/li&gt;
&lt;li&gt;Microsoft FxCop 1.36&lt;/li&gt;
&lt;li&gt;Microsoft FxCop 10&lt;/li&gt;
&lt;li&gt;Microsoft Pex&lt;/li&gt;
&lt;li&gt;Micosoft StyleCop&lt;/li&gt;
&lt;li&gt;NDepend&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-tools"&gt;Other Tools&lt;/h2&gt;
&lt;h3 id="must-have-4"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CLCL&lt;/li&gt;
&lt;li&gt;clip2txt&lt;/li&gt;
&lt;li&gt;Launchy&lt;/li&gt;
&lt;li&gt;ProcessExplorer&lt;/li&gt;
&lt;li&gt;ProcessMonitor&lt;/li&gt;
&lt;li&gt;TortoiseSVN&lt;/li&gt;
&lt;li&gt;SVNMonitor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have-4"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CmdHere Powertoy&lt;/li&gt;
&lt;li&gt;FeedReader&lt;/li&gt;
&lt;li&gt;Network Stumbler&lt;/li&gt;
&lt;li&gt;SRWare Iron&lt;/li&gt;
&lt;li&gt;TortoiseCVS&lt;/li&gt;
&lt;li&gt;TrueCrypt&lt;/li&gt;
&lt;li&gt;VLC Media Player&lt;/li&gt;
&lt;li&gt;ZoomIt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="quicklaunch"&gt;Quicklaunch&lt;/h2&gt;
&lt;h3 id="must-have-5"&gt;Must have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Shortcut to clip2txt&lt;/li&gt;
&lt;li&gt;Shortcut to Explorer as administrative user
%windir%\system32\runas.exe /user:&amp;lt;admin-user&amp;gt; &amp;ldquo;explorer /e,/separate,C:&amp;quot;&lt;/li&gt;
&lt;li&gt;Shortcut to (special) home and working directories
%windir%\explorer.exe /e,/root,c:\projects
&lt;a href=""&gt;\Projects&amp;rdquo;&amp;gt;\uranus\home$&amp;amp;lt;user&amp;gt;\Projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="nice-to-have-5"&gt;Nice to have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;No GIS-links&lt;/li&gt;
&lt;li&gt;No Office links (only Outlook)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Integrate NUnit in Hudson CI-server</title><link>http://blog.marko-apfel.de/posts/integrate-nunit-in-hudson-ci-server/</link><pubDate>Wed, 07 Jul 2010 15:41:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/integrate-nunit-in-hudson-ci-server/</guid><description>&lt;h2 id="precondition"&gt;Precondition&lt;/h2&gt;
&lt;h3 id="naming"&gt;Naming&lt;/h3&gt;
&lt;p&gt;Its a good practice to have a common naming schema for test projects, fixture categories and fixture. Especially to configure automatic runs of unit tests is much more easier with this.&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>Hudson error: could not delete ..config.xml</title><link>http://blog.marko-apfel.de/posts/hudson-error-could-not-delete-config-xml/</link><pubDate>Tue, 06 Jul 2010 16:44:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/hudson-error-could-not-delete-config-xml/</guid><description>&lt;p&gt;Today we updated our &lt;em&gt;Hudson&lt;/em&gt; CI-server. After changing job-configuration &lt;em&gt;Hudson&lt;/em&gt; throws an error, that the &lt;code&gt;config.xml&lt;/code&gt; could not be deleted.&lt;/p&gt;
&lt;p&gt;But the new entries are correct saved.&lt;/p&gt;
&lt;p&gt;Nevertheless such behavior bothers.&lt;/p&gt;
&lt;p&gt;The trick was to update also the plugins. After that all works fine again.&lt;/p&gt;</description></item><item><title>Searching the new FxCop-Release (10.0)</title><link>http://blog.marko-apfel.de/posts/searching-the-new-fxcop-release-10-0/</link><pubDate>Mon, 05 Jul 2010 14:45:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/searching-the-new-fxcop-release-10-0/</guid><description>&lt;p&gt;Today my FxCop-GUI stated, that a new release is available – but the link to this release is broken.&lt;/p&gt;
&lt;p&gt;After googling a little bit i realized, that the new release of FxCop ist actually only included in “Windows SDK for Windows 7.1”.&lt;/p&gt;</description></item><item><title>My own set of SuppressMessage-lines</title><link>http://blog.marko-apfel.de/posts/my-own-set-of-suppressmessage-lines/</link><pubDate>Mon, 05 Jul 2010 10:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/my-own-set-of-suppressmessage-lines/</guid><description>&lt;h2 id="stylecop-issues"&gt;StyleCop issues&lt;/h2&gt;
&lt;h3 id="inheritedoc-comment"&gt;inheritedoc-comment&lt;/h3&gt;
&lt;p&gt;Using &lt;!-- raw HTML omitted --&gt;-comment is not recognized by StyleCop. So this needs a suppression:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// &amp;lt;inheritdoc /&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.StyleCop.CSharp.DocumentationRules&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;SA1604:ElementDocumentationMustHaveSummary&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;InheritDoc&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="fxcop-issues"&gt;FxCop issues&lt;/h2&gt;
&lt;h3 id="too-few-namespaces"&gt;Too few namespaces&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1020:AvoidNamespacesWithFewTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;namespace&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.Core.Service.Logging&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We want to have this namespace, but do not have enough classes to go in it right now to satisfy the rule.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="resharper-only-supports-non-static-test-methods"&gt;ReSharper only supports non static test methods&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1822:MarkMembersAsStatic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;ReSharper could not handle static test methods.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="no-strong-name"&gt;No strong name&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[assembly: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2210:AssembliesShouldHaveValidStrongNames&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Strong name is not needed for this.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="catching-general-exception"&gt;Catching general exception&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Design&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1031:DoNotCatchGeneralExceptionTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We do not know which exceptions could be thrown.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="justification-for-samples-and-fixtures"&gt;Justification for samples and fixtures&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;For fixtures this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="setter-but-no-getter-for-example-in-ioc-or-nhibernate-context"&gt;Setter but no Getter (for example in IoC or NHibernate-context)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Usage&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2227:CollectionPropertiesShouldBeReadOnly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Setter is needed for nhibernate, otherwise a NHibernate.PropertyNotFoundException will be thrown.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Xyz&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We only need a setter for setter injection.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="instantiation-with-ioc"&gt;Instantiation with IoC&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1811:AvoidUncalledPrivateCode&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We need this for unit tests.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1812:AvoidUninstantiatedInternalClasses&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Class would be instantiated by IoC framework.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="incorrect-naming"&gt;Incorrect naming&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.StyleCop.CSharp.NamingRules&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;SA1310:FieldNamesMustNotContainUnderscore&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Windows message constants are commonly named as WM\_xxxxx&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="incorrect-casing"&gt;Incorrect casing&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1709:IdentifiersShouldBeCasedCorrectly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;type&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.Data.Access.IDbFactory&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;&amp;lt;WrongCasedWord&amp;gt;&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1709:IdentifiersShouldBeCasedCorrectly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;type&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;&amp;lt;WrongCasedWord&amp;gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="parametername-should-match-base-declaration"&gt;Parametername should match base declaration&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Naming&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA1725:ParameterNamesShouldMatchBaseDeclaration&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Rule CA1725 has a bug when inspecting parameters from methods from interfaces. So suppress it with class.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="throwing-applicationexception"&gt;Throwing ApplicationException&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.Usage&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CA2201:DoNotRaiseReservedExceptionTypes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;ApplicationException is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fxcop-is-too-strict"&gt;FxCop is too strict&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We decide that this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[module: SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Scope = &amp;#34;resource&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Target = &amp;#34;EsriDE.PipelineManagement.Core.Properties.Messages.resources&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; MessageId = &amp;#34;Toolbar&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;We decide that this is OK.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;This is by design.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="code-from-untaught-colleagues"&gt;Code from untaught colleagues&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Currently, we do not have enough knowledge or experience to fix this.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;[SuppressMessage(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;Microsoft.XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; &amp;#34;CAxyz:XYZ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt; Justification = &amp;#34;Cowboy-coding colleagues.&amp;#34;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Specify a project-specific custom dictionary for FxCop build tasks and Visual Studio Team System static code analysis</title><link>http://blog.marko-apfel.de/posts/specify-a-project-specific-custom-dictionary-for-fxcop-build-tasks-and-visual-studio-team-system-static-code-analysis/</link><pubDate>Fri, 02 Jul 2010 11:27:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/specify-a-project-specific-custom-dictionary-for-fxcop-build-tasks-and-visual-studio-team-system-static-code-analysis/</guid><description>&lt;p&gt;Using a project-specific custom dictionary for &lt;em&gt;FxCop&lt;/em&gt; and &lt;em&gt;FxCop build tasks&lt;/em&gt; is very simple. The &lt;em&gt;FxCopCmd&lt;/em&gt; call in the &lt;em&gt;FxCop&lt;/em&gt;-target offers the parameter &lt;code&gt;/dictionary:&amp;lt;DictionaryName&amp;gt;&lt;/code&gt; for that.&lt;/p&gt;
&lt;p&gt;But for &lt;em&gt;Visual Studio&lt;/em&gt; a little bit more steps are needed. And these steps must me gone for all projects.&lt;/p&gt;</description></item><item><title>Casing of COM-Interop registered components</title><link>http://blog.marko-apfel.de/posts/casing-of-com-interop-registered-components/</link><pubDate>Tue, 08 Jun 2010 09:54:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/casing-of-com-interop-registered-components/</guid><description>&lt;p&gt;During a refactoring I realized that renaming of components, which will be registered for COM-Interop, must be done carefully.&lt;/p&gt;
&lt;p&gt;In my case i changed the casing of &lt;code&gt;XyzToolbar&lt;/code&gt; to &lt;code&gt;XyzToolBar&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;At the developing machine everything works fine. But after installing the modified stuff at the production machine, the toolbar was not visible. Using &lt;code&gt;regasm&lt;/code&gt; with the new assemblies helped.&lt;/p&gt;</description></item><item><title>Global SVN Ignore Patterns und Zeitstempel-Optionen</title><link>http://blog.marko-apfel.de/posts/global-svn-ignore-patterns-und-zeitstempel-optionen/</link><pubDate>Mon, 31 May 2010 09:13:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/global-svn-ignore-patterns-und-zeitstempel-optionen/</guid><description>&lt;h2 id="globale-konfiguration"&gt;Globale Konfiguration&lt;/h2&gt;
&lt;p&gt;Die setzt man unter den globalen SVN-Einstellungen.&lt;/p&gt;
&lt;p&gt;Diese öffnet man per kontextsensitiven Menü im Explorer:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/global-svn-ignore-patterns-und-zeitstempel-optionen/tortoisesvn-configuration-01b.png" alt="Screenshot for Global SVN Ignore Patterns und Zeitstempel-Optionen" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;h3 id="global-ignores"&gt;Global Ignores&lt;/h3&gt;
&lt;h4 id="standard"&gt;Standard&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="sinnvoll-sind-für-net-entwicklungen-und-visual-studio-und-resharper-folgende-ergänzungen"&gt;sinnvoll sind für .NET-Entwicklungen und Visual Studio und ReSharper folgende Ergänzungen&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*.suo *.csproj.user */_ReSharper.* *.ReSharper.user */bin */obj *.cache *.gpState&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der oft genannte Vorschlag &lt;code&gt;*bin&lt;/code&gt; und &lt;code&gt;*obj&lt;/code&gt; ist keine gute Idee da auch Dateien die mit &lt;code&gt;bin&lt;/code&gt; enden unterdrückt werden (&lt;code&gt;Something.bin&lt;/code&gt; oder &lt;code&gt;Taschendiebin&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Specify a custom dictionary for FxCop and Visual Studio source analysis</title><link>http://blog.marko-apfel.de/posts/specify-a-custom-dictionary-for-fxcop-and-visual-studio-source-analysis/</link><pubDate>Tue, 11 May 2010 17:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/specify-a-custom-dictionary-for-fxcop-and-visual-studio-source-analysis/</guid><description>&lt;p&gt;Renaming the default custom dictionary from &lt;code&gt;CustomDictionary.xml&lt;/code&gt; to an other name – for instance &lt;code&gt;FxCop.CustomDictionary.xml&lt;/code&gt; needs some additional changes to work in involved applications.&lt;/p&gt;
&lt;h2 id="visual-studio-team-system-code-analysis"&gt;Visual Studio Team System code analysis&lt;/h2&gt;
&lt;p&gt;For Visual Studio Team System code analysis this file should be added as a link to all projects and set to be the Build Action CodeAnalysisDirectory.&lt;/p&gt;</description></item><item><title>Wie spricht man den Lambda-Operator aus?</title><link>http://blog.marko-apfel.de/posts/wie-spricht-man-den-lambda-operator-aus/</link><pubDate>Wed, 05 May 2010 09:27:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/wie-spricht-man-den-lambda-operator-aus/</guid><description>&lt;p&gt;Zur Aussprache des Lambda-Operators gibt es unterschiedliche Auffassungen.&lt;/p&gt;
&lt;p&gt;Im Englischen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Func f = x =&amp;gt; x * 2;
&lt;ul&gt;
&lt;li&gt;”x goes to x * 2”&lt;/li&gt;
&lt;li&gt;”x maps to x * 2”&lt;/li&gt;
&lt;li&gt;”x becomes x * 2”&lt;/li&gt;
&lt;li&gt;”x induces x * 2”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Func test = c =&amp;gt; c.City == &amp;ldquo;London&amp;rdquo;;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;c for which c.City equals London&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Im Deutschen:&lt;/p&gt;</description></item><item><title>Gefahren des “cleanup code refactoring” im Zusammenhang mit P/Invoke und übergebenen Strukturen</title><link>http://blog.marko-apfel.de/posts/gefahren-des-cleanup-code-refactoring-im-zusammenhang-mit-p-invoke-und-ubergebenen-strukturen/</link><pubDate>Wed, 28 Apr 2010 09:40:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/gefahren-des-cleanup-code-refactoring-im-zusammenhang-mit-p-invoke-und-ubergebenen-strukturen/</guid><description>&lt;h2 id="problemkontext"&gt;Problemkontext&lt;/h2&gt;
&lt;p&gt;So schön auch das automatische “cleanup code refactoring” von ReSharper ist, im Zusammenhang mit Strukturdefinitionen, die als Übergabe-Parameter für unmanaged Code Aufrufe benötigt werden, lauert eine große Gefahr.&lt;/p&gt;
&lt;p&gt;Standardmäßig ist im Profil “Full Cleanup” die Option “Reorder type members” auf “Yes” gestellt.&lt;/p&gt;</description></item><item><title>Remote Debugging mit Visual Studio</title><link>http://blog.marko-apfel.de/posts/remote-debugging-mit-visual-studio/</link><pubDate>Tue, 27 Apr 2010 09:38:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/remote-debugging-mit-visual-studio/</guid><description>&lt;p&gt;Das Debuggen einer Applikation auf einem Rechner ohne installiertes Visual Studio gestaltet sich mit dem Remote Debugging Monitor relativ einfach.&lt;/p&gt;
&lt;p&gt;Derartige Konstellationen ergeben sich insbesondere dann, wenn ein Debugging von Anwendungen in Produktiv-Umgebungen notwendig wird.&lt;/p&gt;</description></item><item><title>F# and ArcObjects, Part 3</title><link>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-3/</link><pubDate>Fri, 26 Mar 2010 13:15:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-3/</guid><description>&lt;p&gt;Today i played a little bit with IFeature-sequences and piping data.
The result was a calculator of the bounding box around all features in a feature class.&lt;/p&gt;
&lt;p&gt;Maybe a little bit dirty, but for learning was it OK. ;-)&lt;/p&gt;</description></item><item><title>F# and ArcObjects, Part 2</title><link>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-2/</link><pubDate>Thu, 25 Mar 2010 14:49:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-2/</guid><description>&lt;p&gt;After accessing one feature now i iterate through all features of a feature class:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fs" data-lang="fs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;System;;&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="nf"&gt;#I&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;C:\Program&lt;/span&gt; &lt;span class="nf"&gt;Files\ArcGIS\DotNet&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.System.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.DataSourcesGDB.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.Geodatabase.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.esriSystem;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.DataSourcesGDB;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.Geodatabase;;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;aoInitialize&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AoInitializeClass();;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;status&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor);;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;workspacefactory&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SdeWorkspaceFactoryClass();;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;connection&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;SERVER=okul;DATABASE=p;VERSION=sde.default;INSTANCE=sde:sqlserver:okul;USER=s;PASSWORD=g&amp;#34;;;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;workspace&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;workspacefactory.OpenFromString(connection,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nf"&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureWorkspace&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;(box&lt;/span&gt; &lt;span class="nf"&gt;workspace)&lt;/span&gt; &lt;span class="nf"&gt;:?&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;IFeatureWorkspace;;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureClass&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;featureWorkspace.OpenFeatureClass(&amp;#34;Praxair.SFG.BP_L_ROHR&amp;#34;);;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;queryFilter&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;QueryFilterClass();;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureCursor&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;featureClass.Search(queryFilter,&lt;/span&gt; &lt;span class="nf"&gt;true);;&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="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureCursorSeq&lt;/span&gt; &lt;span class="nf"&gt;(featureCursor&lt;/span&gt; &lt;span class="kn"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;IFeatureCursor)&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;actualFeature&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt; &lt;span class="nf"&gt;(featureCursor.NextFeature())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;seq&lt;/span&gt; &lt;span class="nf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nf"&gt;(!actualFeature)&lt;/span&gt; &lt;span class="nf"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;null&lt;/span&gt; &lt;span class="k"&gt;do
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;yield&lt;/span&gt; &lt;span class="nf"&gt;actualFeature&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nf"&gt;actualFeature&lt;/span&gt; &lt;span class="nf"&gt;:=&lt;/span&gt; &lt;span class="nf"&gt;featureCursor.NextFeature()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;featureCursorSeq&lt;/span&gt; &lt;span class="nf"&gt;featureCursor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;Seq.iter&lt;/span&gt; &lt;span class="nf"&gt;(fun&lt;/span&gt; &lt;span class="nf"&gt;feature&lt;/span&gt; &lt;span class="nf"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;Console.WriteLine&lt;/span&gt; &lt;span class="nf"&gt;((!feature).OID));;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>F# and ArcObjects, Part 1</title><link>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-1/</link><pubDate>Thu, 25 Mar 2010 10:58:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-1/</guid><description>&lt;p&gt;After having a first look on F# its time to ask: How could i use F# with ArcObjects.&lt;/p&gt;
&lt;p&gt;So my first steps was to do something with a feature in a F# interactive session.
And these are my first code lines:&lt;/p&gt;</description></item><item><title>Integrating F# in SharpDevelop</title><link>http://blog.marko-apfel.de/posts/integrating-f-sharp-in-sharpdevelop/</link><pubDate>Wed, 24 Mar 2010 13:10:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/integrating-f-sharp-in-sharpdevelop/</guid><description>&lt;p&gt;After installing SharpDevelop 4 the F# Interactive could not be activated.&lt;/p&gt;
&lt;p&gt;In my case the correct folder for the F# installation must by specified in die application config file.
So i opened SharpDevelop.exe.config and set this entry in the appSettings section:&lt;/p&gt;</description></item><item><title>MSB3105: Duplicate ressource parameter</title><link>http://blog.marko-apfel.de/posts/msb3105-duplicate-ressource-parameter/</link><pubDate>Mon, 25 Jan 2010 05:17:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/msb3105-duplicate-ressource-parameter/</guid><description>&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;error MSB3105: The item &amp;#34;BALoginForm.resources&amp;#34; was specified more than once in the &amp;#34;Resources&amp;#34; parameter.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Duplicate items are not supported by the &amp;#34;Resources&amp;#34; parameter.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="reason"&gt;Reason&lt;/h2&gt;
&lt;p&gt;We use two custom cultures to divide between UIs for two customers. At the machine with this error only one custom culture was installed.&lt;/p&gt;</description></item><item><title>MSBuild Exec task: using quotes in WorkingDirectory does not work</title><link>http://blog.marko-apfel.de/posts/msbuild-exec-task-using-quotes-in-workingdirectory-does-not-work/</link><pubDate>Fri, 27 Nov 2009 10:01:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/msbuild-exec-task-using-quotes-in-workingdirectory-does-not-work/</guid><description>&lt;p&gt;For a general applicability I tried to specify the &lt;code&gt;WorkingDirectory&lt;/code&gt; attribute in a quoted manner:&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;WorkingDir&amp;gt;&lt;/span&gt;&lt;span class="ni"&gt;&amp;amp;quot;&lt;/span&gt;$(SolutionRoot)\EsriDE.Commons\tools\EsriDE\&lt;span class="ni"&gt;&amp;amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/WorkingDir&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or&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;DoubleQuotes&amp;gt;&lt;/span&gt;%22&lt;span class="nt"&gt;&amp;lt;/DoubleQuotes&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;WorkingDir&amp;gt;&lt;/span&gt;$(DoubleQuotes)$(SolutionRoot)\EsriDE.Commons\tools\EsriDE\$(DoubleQuotes)&lt;span class="nt"&gt;&amp;lt;/WorkingDir&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Exec task self is&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;Exec&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;WorkingDirectory=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;$(WorkingDir)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;Command=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;$(ExtractComCategories) $(InputDirectoryArg) $(FilterArg) $(SeparationArg) $(OutputDirectoryArg) $(OutputFileArg) $(OutputFormatArg)&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Every variant throws during building the exception MSB6003 (The directory name is invalid):&lt;/p&gt;</description></item><item><title>Visual Studio 2005/2008 Code Analysis Error</title><link>http://blog.marko-apfel.de/posts/visual-studio-2005-2008-code-analysis-error/</link><pubDate>Thu, 26 Nov 2009 12:52:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-2005-2008-code-analysis-error/</guid><description>&lt;p&gt;After installing VS2005 TE on my machine (which previously runs Visual Studio 2008 TE) all mixed projects (VS2005/VS2008 compatibility with TargetFramework=2.0 and ToolsVersion=2.0 options) thrown an error during compilation:&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:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(46,4):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error : In order to perform Code Analysis on managed binaries, MSBuild needs to launch FxCop.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MSBuild is unable to locate the FxCop binaries.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Make sure Visual Studio Team Edition for Software Developers or Visual Studio Team Suite is installed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;and run MSBuild from within the &amp;#34;Visual Studio Command Prompt&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;or specify the path to FxCop by setting the FXCOPDIR environment variable.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Specifying the &lt;code&gt;FXCOPDIR&lt;/code&gt;-variable brings up the next obscure errors.&lt;/p&gt;</description></item><item><title>Stopping a build at the TFS</title><link>http://blog.marko-apfel.de/posts/stopping-a-build-at-the-tfs/</link><pubDate>Thu, 26 Nov 2009 07:54:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/stopping-a-build-at-the-tfs/</guid><description>&lt;p&gt;Open a “visual studio command prompt” and try:&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;tfsbuild stop https://*****:8143 RXXXXX_Sourcecode Gen_2.6_branch_test_20080827.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Parsing argument line with a folder-parameter ending with backslash</title><link>http://blog.marko-apfel.de/posts/parsing-argument-line-with-a-folder-parameter-ending-with-backslash/</link><pubDate>Wed, 25 Nov 2009 05:21:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/parsing-argument-line-with-a-folder-parameter-ending-with-backslash/</guid><description>&lt;p&gt;By using the argument line array of Main(string[] args) it is important to know such effect.&lt;/p&gt;
&lt;p&gt;If you specify a quoted folder (e.g. &lt;code&gt;&amp;quot;C:\Projects\PDE\PRJ_EsriDE_Common\trunk\code\Commons\bin\Debug\&amp;quot;&lt;/code&gt;) the ending backslash makes troubles.&lt;/p&gt;
&lt;p&gt;My whole argument line (linebreaked for better viewing):&lt;/p&gt;</description></item><item><title>Visual Studio: Find in files with *.xml wildcard does not find all occurrences</title><link>http://blog.marko-apfel.de/posts/visual-studio-find-in-files-with-xml-wildcard-does-not-find-all-occurrences/</link><pubDate>Tue, 17 Nov 2009 04:51:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-find-in-files-with-xml-wildcard-does-not-find-all-occurrences/</guid><description>&lt;p&gt;During a refactoring we searched for full type names in our IoC-config files. The filter was setted to &lt;code&gt;*.xml&lt;/code&gt; and Visual Studio does not found all occurrences of the search string in these xml-files.&lt;/p&gt;</description></item><item><title>StyleCop throws documentation warning SA1600 for private elements</title><link>http://blog.marko-apfel.de/posts/stylecop-throws-documentation-warning-sa1600-for-private-elements/</link><pubDate>Thu, 12 Nov 2009 06:24:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/stylecop-throws-documentation-warning-sa1600-for-private-elements/</guid><description>&lt;p&gt;if you see the following warnings in your code:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/stylecop-throws-documentation-warning-sa1600-for-private-elements/StyleCop.Warning.SA1600.png" alt="Screenshot for StyleCop throws documentation warning SA1600 for private elements" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;You have two choices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deactivate the rule
but this disables this rule for all documentations – also the wanted&lt;/li&gt;
&lt;li&gt;tune the detail settings
In the settings editor you see additional options if you select the “Documentation Rules” root node&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/stylecop-throws-documentation-warning-sa1600-for-private-elements/StyleCop.Settings.01.png" alt="Screenshot for StyleCop throws documentation warning SA1600 for private elements" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;</description></item><item><title>Using a custom dictionary in code analysis</title><link>http://blog.marko-apfel.de/posts/using-a-custom-dictionary-in-code-analysis/</link><pubDate>Wed, 11 Nov 2009 09:22:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/using-a-custom-dictionary-in-code-analysis/</guid><description>&lt;p&gt;see also &lt;a href="http://blog.marko-apfel.de/posts/working-with-microsoft-fxcop/"&gt;Working with Microsoft FxCop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As described in the previous post a custom dictionary could be referenced in a FxCop-call of a target by using the option:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dictionary:&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;quot;$(ProjectDir)..\FxCop.CustomDictionary.xml&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;quot;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But how is it possible to publish this custom dictionary for the Visual Studio integrated code analysis?&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>ReSharper is not available</title><link>http://blog.marko-apfel.de/posts/resharper-is-not-available/</link><pubDate>Mon, 09 Nov 2009 07:23:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/resharper-is-not-available/</guid><description>&lt;p&gt;Today a colleague ask me to help.&lt;/p&gt;
&lt;p&gt;On his system all ReSharper menus are grayed out. Also the Visual Studio Add-In Manager does not show this add-in.&lt;/p&gt;
&lt;p&gt;He tried:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a new installation: without success,&lt;/li&gt;
&lt;li&gt;running with administrative privileges: without success,&lt;/li&gt;
&lt;li&gt;looking in event- and application-logs: no entries.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After searching a little bit with old buddy google we found this message: &lt;a href="http://resharper.blogspot.com/2008/10/wild-world-of-visual-studio-mysterious.html"&gt;Wild World of Visual Studio &amp;ndash; Mysterious Component&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SAP.Net.Setup_2.0.msi throws “You must first install the Visual Studio.NET 7.1”</title><link>http://blog.marko-apfel.de/posts/sap-net-setup-2-0-msi-throws-you-must-first-install-the-visual-studio-net-7-1/</link><pubDate>Fri, 06 Nov 2009 04:29:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/sap-net-setup-2-0-msi-throws-you-must-first-install-the-visual-studio-net-7-1/</guid><description>&lt;p&gt;During installation of the SAP .NET Connector the setup throws this error because no Visual Studio 2003 could be found.&lt;/p&gt;
&lt;p&gt;If you only need the assembly sap.connector.dll (for instance in cases of old projects which references this dll) you could ask google for downloading it ;-)&lt;/p&gt;</description></item><item><title>Visual Studio: Building parts of a solution</title><link>http://blog.marko-apfel.de/posts/visual-studio-building-parts-of-a-solution/</link><pubDate>Sun, 01 Nov 2009 07:10:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-building-parts-of-a-solution/</guid><description>&lt;p&gt;Often in large solutions I had the problem that a couple of little chances needs building some projects. Unfortunately Visual Studio tends to build more projects than needed.&lt;/p&gt;
&lt;p&gt;Formerly I used the configuration manager to deactivate unused projects. This is a overhead which sucks.&lt;/p&gt;</description></item><item><title>Visual Studio Error: The item "*.resources" was specified more than once in the "Resources" parameter.</title><link>http://blog.marko-apfel.de/posts/visual-studio-error-the-item-resources-was-specified-more-than-once-in-the-resources-parameter/</link><pubDate>Fri, 30 Oct 2009 09:58:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-error-the-item-resources-was-specified-more-than-once-in-the-resources-parameter/</guid><description>&lt;p&gt;Full error message in Visual Studio output window:&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;The item `*.resources` was specified more than once in the &amp;#34;Resources&amp;#34; parameter. Duplicate items are not supported by the &amp;#34;Resources&amp;#34; parameter.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I saw this error on context of custom cultures usage. The compiling machine does not have a project used custom culture registered.&lt;/p&gt;</description></item><item><title>Nachtrag: Casting Anti-Pattern</title><link>http://blog.marko-apfel.de/posts/nachtrag-casting-anti-pattern/</link><pubDate>Thu, 29 Oct 2009 12:40:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/nachtrag-casting-anti-pattern/</guid><description>&lt;p&gt;Wie so oft im Leben sind manche Dinge auf den zweiten Blick komplexer als sie auf dem Ersten den Anschein haben.&lt;/p&gt;
&lt;p&gt;Es kam die Anfrage, ob es nicht doch einen Unterschied zwischen &lt;code&gt;as&lt;/code&gt; und &lt;code&gt;is&lt;/code&gt; gibt &amp;amp; dann wurden noch ein paar Inputs gefunden, dass im Falle des &amp;ldquo;Überladens von Cast-Operatoren&amp;rdquo; mögliche Fallen lauern.&lt;/p&gt;</description></item><item><title>Casting Anti-Pattern</title><link>http://blog.marko-apfel.de/posts/casting-anti-pattern/</link><pubDate>Thu, 29 Oct 2009 12:35:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/casting-anti-pattern/</guid><description>&lt;p&gt;Im unten stehendem Code ist ein Anti-Pattern, welches immer wieder im ArcObjects-Kontext zu beobachten ist.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="n"&gt;IMapSurroundFrame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;IMapSurround&lt;/span&gt; &lt;span class="n"&gt;mapSurround&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;IMapSurroundFrame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;MapSurround&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;..&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Es wird eine &lt;code&gt;is&lt;/code&gt;-Abfrage gemacht (&lt;code&gt;element is IMapSurroundFrame&lt;/code&gt;) und dann ein Stück später der tatsächliche Cast &lt;code&gt;((IMapSurroundFrame)element)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Visual Studio lists Error: “CA0503 : Additional code analysis warnings or errors cannot be displayed”</title><link>http://blog.marko-apfel.de/posts/visual-studio-lists-error-ca0503-additional-code-analysis-warnings-or-errors-cannot-be-displayed/</link><pubDate>Thu, 29 Oct 2009 05:54:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-lists-error-ca0503-additional-code-analysis-warnings-or-errors-cannot-be-displayed/</guid><description>&lt;p&gt;This error during compilation annoyed me in a legacy project.&lt;/p&gt;
&lt;p&gt;Apparently because of performance issues the &lt;em&gt;Visual Studio&lt;/em&gt; development team decided to limit the warnings of code analysis to 200 items.&lt;/p&gt;
&lt;p&gt;This behavior could be parameterized under:&lt;/p&gt;</description></item><item><title>Visual Studio 2005 and 2008 compatibility with ReSharper</title><link>http://blog.marko-apfel.de/posts/visual-studio-2005-and-2008-compatibility-with-resharper/</link><pubDate>Wed, 21 Oct 2009 08:57:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/visual-studio-2005-and-2008-compatibility-with-resharper/</guid><description>&lt;p&gt;In our team we have developers with Visual Studio 2005 and 2008. Often we have projects which must be coded by a mixed team.&lt;/p&gt;
&lt;h2 id="visual-studio-2005-and-2008-compatibility-for-project-files"&gt;Visual Studio 2005 and 2008 compatibility for project-files&lt;/h2&gt;
&lt;p&gt;Normally this is no problem because adding projects in Visual Studio 2005 and manually introducing the ToolsVersion=&amp;ldquo;2.0&amp;rdquo; attribute in the new csproj-file allows an coexisting working when using two sln-files for Visual Studio 2005 and 2008.&lt;/p&gt;</description></item><item><title>Catching COM-Exceptions from ArcObjects</title><link>http://blog.marko-apfel.de/posts/catching-com-exceptions-from-arcobjects/</link><pubDate>Tue, 20 Oct 2009 14:36:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/catching-com-exceptions-from-arcobjects/</guid><description>&lt;p&gt;to catch the COM-Exception in own applications thrown from the underlaying ArcObjects-Library could be done with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;COMException&lt;/span&gt; &lt;span class="n"&gt;ComEx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;MyCode errored: {0}, Error Code: {1}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ComEx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ComEx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ErrorCode&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;the special error constants could be found under:&lt;/p&gt;</description></item><item><title>NUnit project file cant reference assemblies which are not in subfolders</title><link>http://blog.marko-apfel.de/posts/nunit-project-file-cant-reference-assemblies-which-are-not-in-subfolders/</link><pubDate>Fri, 12 Jun 2009 13:35:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/nunit-project-file-cant-reference-assemblies-which-are-not-in-subfolders/</guid><description>&lt;p&gt;We use a developer tree like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;src&lt;/code&gt; (contains the master-SLN and other code-stuff)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build&lt;/code&gt; (contains tools to build assemblies, code-doku, ..)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bin&lt;/code&gt; (central common output-folder for c#-compiler)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Under src normally the &lt;code&gt;&amp;lt;project&amp;gt;.nunit&lt;/code&gt; should lay. But this file then references the assembly in a schema like:
&lt;code&gt;&amp;lt;assembly path=&amp;quot;..\bin\Debug\EsriDE.PipelineManagement.Core.ClassExtensions.Test.dll&amp;quot; &amp;gt;&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Multilanguage with C#</title><link>http://blog.marko-apfel.de/posts/multilanguage-with-c-sharp/</link><pubDate>Sat, 01 Nov 2008 10:11:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/multilanguage-with-c-sharp/</guid><description>&lt;p&gt;The .NET-Frameworks offers a good support for application which needs to be localizable.
For each of my C#-projects i create three resources under the properties-folder.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Resource&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Images.resx&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;contains images for the application &lt;!-- raw HTML omitted --&gt; (mostly not needed to be localized, only for simple resource-access)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Messages.resx&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;contains strings of messages for users &lt;!-- raw HTML omitted --&gt; (such as contents of MessageBoxes)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Resources.resx&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;(normally created from VS by default) &lt;!-- raw HTML omitted --&gt; contains GUI-relevant stuff (such as label- and button-texts)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For this example we use a simple message text in Messages.resx. The name of the localizable message text is MsgSampleText.
&lt;img src="https://web.archive.org/web/20090203002049id_/http://marko.apfel.googlepages.com/EsriDe.Samples.Localization.02.png" alt="Screenshot for Multilanguage with C#" loading="lazy" decoding="async"&gt;&lt;/p&gt;</description></item><item><title>Konfigurationfile für eine Library lesen</title><link>http://blog.marko-apfel.de/posts/konfigurationfile-fur-eine-library-lesen/</link><pubDate>Thu, 10 May 2007 16:20:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/konfigurationfile-fur-eine-library-lesen/</guid><description>&lt;p&gt;Beim Verwenden des Standard-Mechanismus zum Lesen von Konfigurationsdaten wird immer die config-Datei der EXE gelesen.&lt;/p&gt;
&lt;p&gt;Soll eine DLL über eine eigene Konfigurationsdatei verfügen, verwendet man die Klasse &lt;code&gt;ExeConfigurationFileMap&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Beispiel:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ExeConfigurationFileMap&lt;/span&gt; &lt;span class="n"&gt;ecfm&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ExeConfigurationFileMap&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ecfm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ExeConfigFilename&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;MyLibrary.dll.config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Configuration&lt;/span&gt; &lt;span class="n"&gt;cfg&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ConfigurationManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OpenMappedExeConfiguration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ecfm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ConfigurationUserLevel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;AppSettingsSection&lt;/span&gt; &lt;span class="n"&gt;ass&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AppSettingsSection&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetSection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;appSettings&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;configValue&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;aSect&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;configValue&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;blabla&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Referenzieren von Assemblys im GAC</title><link>http://blog.marko-apfel.de/posts/referenzieren-von-assemblys-im-gac/</link><pubDate>Mon, 16 Apr 2007 16:00:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/referenzieren-von-assemblys-im-gac/</guid><description>&lt;p&gt;Das Referenzieren von Assemblys im GAC, die nicht auf dem .NET-Reiter des Add-Reference-Dialogs erscheinen macht man wie folgt:&lt;/p&gt;
&lt;p&gt;Auf den Browse-Reiter wechseln und im File-Name-Feld dann vollen Namen zur DLL im GAC angeben.&lt;/p&gt;</description></item></channel></rss>