Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Sunday, 11. July 2010


“Fake – F# Make” 1.33.0 released

Filed under: F#,FAKE - F# Make — Steffen Forkmann at 15:11 Uhr

Yesterday I released “FAKE – F# Make” version 1.33.0. This release has lots of small bug fixes and a couple of new features.

Important links:

Git helpers -Fake.Git.dll

Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server.

[Wikipedia]

In the last couple of months I worked on small helper library for controlling Git. This library is now released as part of “FAKE – F# Make”. You can find the source code at http://github.com/forki/FAKE/tree/master/src/app/Fake.Git/.

Features:

  • Repository handling
    • init, clone
  • Submodules
    • init, clone, information about submodules
  • Branches
    • checkout, create, delete, merge, rebase, tag, pull, push, reset, commit, …
  • SHA1 calculation
Documentation generation with James Gregory’s docu tool

What’s a docu? A documentation generator for .Net that isn’t complicated, awkward, or difficult to use. Given an assembly and the XML that’s generated by Visual Studio, docu can produce an entire website of documentation with a single command.

[docu website]

Fake comes bundled with James Gregory’s documentations generator “docu”, which converts XML-Documentation comments into HTML files. All you need to do is downloading a template and calling the docu task inside your build script:

!+ (buildDir + "*.dll")
     |> Scan
     |> Docu (fun p ->
         {p with
             ToolPath = docuPath + "docu.exe"
             TemplatesPath = templatesSrcDir
             OutputPath = docsDir })

Since FAKE builds its own documentation with docu I started to add more (and hopefully better) XML doc comments. My plan is to describe more and more of the internal FAKE functions in the next releases. An updated HTML-document (generated via a docu task) can be found at http://www.navision-blog.de/fake/.

Side by side specification

For Test-driven development (TDD) it’s sometimes nice to have the specifications next to the implementation files since the specs are considered as documentation.

By using a tool like VSCommands it is possible to group the implementation with the specs (see also http://gist.github.com/457248).

This “side by side specification” makes TDD a lot easier but of course we don’t want to deploy the specification classes and the test data.

Side by side specification ==> After "RemoveTestFromProject"

FAKE has a new feature which automatically removes all specification files and test framework references according to a given convention:

Target "BuildApp" (fun _ –>
      !+ @"src\app\**\*.csproj"
         |> Scan
         |> Seq.map (
             RemoveTestsFromProject
                 AllNUnitReferences      // a default references convention
                 AllSpecAndTestDataFiles // a default file convention
                 )
         |> MSBuildRelease buildDir "Build"
         |> Log "AppBuild-Output: "
)

The conventions are simple functions and can be customized e.g.:

/// All Spec.cs or Spec.fs files and all files containing TestData
let AllSpecAndTestDataFiles elementName (s:string) =
     s.EndsWith "Specs.cs" ||
       s.EndsWith "Specs.fs" ||
       (elementName = "Content" && s.Contains "TestData")
Miscellaneous
  • SQL Server helpers are moved to Fake.SQL.dll
    • Additional functions for attaching and detaching databases.
  • FileHelper.CopyCached function was added
    • Copies the files from a cache folder. If the files are not cached or the original files have a different write time the cache will be refreshed.
  • EnvironmentHelper.environVarOrDefault added
    • Retrieves the environment variable or a given default.
  • Fixed Issue 3: toRelativePath calculates paths with ..\..\ if needed
  • Added a build time report to the build output.
  • XPathReplace and XMLPoke tasks added.
    • Replaces text in an XML file at the location specified by an XPath expression.
  • ILMerge task added
  • Windows Installer XML (WiX) task added
Tags: , , , , , , , ,

Friday, 6. June 2008


Technisches NAV-Downgrade von NAV 5.01 auf NAV 4.03

Filed under: Navision,SQL Server — Steffen Forkmann at 9:24 Uhr

Jörg Stryk zeigt in seinem Blog einen interessanten Weg, um ein technisches Downgrade von NAV 5.01 auf NAV 4.03 durchzuführen. Auch wenn das Problem in der Praxis hoffentlich nicht vorkommt, trägt der Artikel doch zum Verständnis des Upgradeprozesses bei.

Tags: , ,

Tuesday, 15. April 2008


Delphi for PHP 2.0 veröffentlicht

Filed under: ASP.NET,SQL Server — Steffen Forkmann at 12:51 Uhr

Nachdem Delphi for PHP Version 1.0 in meinem Test nicht besonders gut abgeschnitten hat, wurde nun die Version 2.0 von CodeGear veröffentlicht. Viele der von mir kritisierten Themen wurden in der Version 2.0 auch umgesetzt.

Zu den wichtigsten Features:

  • mySQL, SQL Server und viele andere Datenbanksysteme werden nun unterstützt
  • Das CodeBehind-Konzept von ASP.NET wurde eingebaut
  • Die Dokumentation hat sich verbessert – Es wurde dabei auch ein Wiki-Konzept umgesetzt
  • PHP-Runtime-Profiler
  • Viele kleinere Designer- und Editor-Verbesserungen

Da Remote-Debugging aber scheinbar immer noch nicht intergriert ist, werde ich auch jetzt keinen Rückzieher von meinem damaligen Testfazit (“Nie wieder Borland”) machen und mir “Delphi for PHP 2.0” auch nicht installieren.

Weitere Informationen:

Tags: , , , , , ,

Wednesday, 9. April 2008


Geniale Navision-Werbung

Filed under: Lustiges,Navision,SQL Server — Steffen Forkmann at 15:20 Uhr

Eben habe ich beim Surfen eine sehr schöne Werbung von Jörg Stryk gefunden. Stryk ist ein in NAV-Kreisen bekannter MVP und besitzt große Expertise im Bereich NAV + SQL Server.

If your Navision sucks....

Er hat ürbigens auch ein tolles Buch zu seinem Spezialgebiet geschrieben:

Tags: , ,

Sunday, 16. March 2008


Neuerungen im Service Pack 1 für Microsoft Dynamics NAV 5?

Filed under: Dynamics NAV 2009,msu solutions GmbH,Navision,SQL Server — Steffen Forkmann at 11:27 Uhr

Waldo beschreibt in seinem Convergence Tagebuch die Neuerungen des SP1 für NAV 5. Die wichtigsten Neuerungen sind meiner Meinung nach in den Performance Optimierungen für SQL Server zu finden:

  • Verhinderung des Parameter Sniffing auf dem SQL Server 2005
  • SIFT wird nun über “Indexed Views” abgebildet
  • NAV benutzt nun Bulk Inserts und reduziert damit die Server RoundTrips. Außerdem verschiebt sich das Speichern auf den letzten möglichen Moment einer Transaktion.

Ein interessanter Satz am Ende des Beitrages ist übrigens:

“Keep in mind, if you want to go to the NAV2009 RoleTailored client, you’ll have to upgrade to the latest version (5.0 SP1).”

Der Download wird wie gewohnt über Microsofts PartnerSource-Seite möglich sein.

Nachtrag: Wie Parameter Sniffing im SP 1 verhindert wird, beschreibt Lars Lohndorf-Larsen.

Nachtrag 2: Ein weiterer interessanter Vorteil von SP 1 ist, dass man Datenbankplatz vom SQL Server zurück bekommt. Robert berichtet in seinem Beispiel von einer Reduktion von 65 GB auf 55 GB.

Tags: , , ,

Sunday, 3. June 2007


Navision Performance-Optimierung auf dem SQL-Server

Filed under: msu solutions GmbH,Navision,SQL Server — Steffen Forkmann at 11:28 Uhr

Seit Microsoft das SP1 für Dynamics Nav 4 heraus gebracht hat, gibt es neue C/AL-Befehle zur schnelleren SQL-Server-Abfrage. Da immer wieder Fragen dazu auftauchen, hier eine kleine Zusammenfassung.

(weiterlesen…)

Tags: , , , , , ,