Archive

Archive for the ‘windows’ Category

Impressions during developing my first application with Mono and Gtk# (GtkSharp)

2012/09/30 Comments off

Why Mono? Why Gtk?

Over the past couple of years I have been developing C# ASP.NET enterprise applications. So I am quite comfortable with the Microsoft stack.

That answers the first question: Mono gives me C# and the .NET stack.

On the other hand I have been using linux as a desktop environment on my home machine for over a decade. I am comfortable with using linux as my primary OS.

That answers the second question: Mono gives me access to Gtk, the graphics library of gnome, which is the default “desktop” in many linux distributions.

The App

I want to synchronize different Git repositories semi-automatically using a Gui.

  • Default behaviour of the automation can be loaded via a Json file.
  • Each entry describes a repository set to be synchronized.

The app is located at https://github.com/draptik/RepoSync

I also published a small demo application for gtk# and treeview: https://github.com/draptik/GtkSharpTreeViewDemo

Impressions

Monodevelop vs Visual Studio

I’ll keep it brief: If you’re used to Visual Studio and ReSharper, Monodevelop does not come close. On the other hand Monodevelop is a full C# IDE which works with linux. And Monodevelop can be used cross-plattform.

Gtk# API

The Gtk# API is not your typical .NET library. You will very soon notice that the origins are C/C++. This takes some getting used to if you have a .NET background.

Typically there are no return values. Instead Gtk# methods very often use the “out” keyword in .NET because that comes closer to the C++ implementation using pointers.

Here is an example:

## Mono Gtk# Code
bool someBool = false;
if (listStore.GetIterFirst (out iter)) {
do {
someBool = (bool) listStore.GetValue (iter, 0);
} while (someBool && listStore.IterNext (ref iter));
}
return someBool;

## Pseudo-C# Code
return listStore.ToList().Any(s => s.MyBoolProp);

From the .NET side, I don’t like the Gtk# API. I prefer methods having return values. I guess it is a matter of tast. If it would really bother me, I would write some wrappers around… 😉

Converting a Subversion repository to Git

2012/02/06 Comments off

Just discovered this:

John Albin wrote an excellent article on how to convert a subversion repository to git:

http://john.albin.net/git/convert-subversion-to-git

NHibernate 3.2 Upgrades

2011/11/09 Comments off
Categories: development, software, windows Tags:

uNhAddIns patch for NHibernate 3.1

2011/10/05 Comments off

since most NuGet packages related to NHibernate come with NHibernate version 3.1.0.4000 (at the time of writing), I tried rebuilding uNhAddIns (commit #773) with the newer version of NHibernate.

My changes:

  • upgraded NHibernate to version 3.1.0.4000 (Iesi.Collections, NHibernate, NHibernate.ByteCode.Castle)
  • implemented new Interface method ‘IsProxy’ for IProxyFactoryFactory (CSLProxyFactoryFactory, ProxyFactoryFactory)

BTW: .NET is becoming more and more like Java… Who doesn’t love names like ‘IProxyFactoryFactory’? 😉

I did not update any tests.

Feel free to use this code (no licence).

My patch can be found at:

Patch at Google Code

App.Config: Order matters

2011/09/23 1 comment

Note to self:

Within an App/Web.config in .NET… The startup node must be the last node…

Example: Create a plain WPF application from Visual Studio 2010, add an App.Config file, and try building Option 1 and Option 2 below.

Option 1:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
  <configSections />
</configuration>

This throws: “The type initializer for ‘System.Windows.Application’ threw an exception.”

Option 2:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections />
  <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>

Fine.

Do I want to read 2.5MB of

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\DotNetConfig.xsd

? No.

Antivir regression bug makes Visual Studio 2010 unusable

2011/07/09 Comments off

The current version of Antivir Personal slows down Visual Studio 2010 making it unbearable to develop ASP.NET applications.

Debugging with active Antivir: appr. 5min for an empty Default.aspx page to display.

Debugging with deactivated Antivir: a few seconds for an empty Default.aspx page to display.

Until Antivir fixes this bug I will give Microsoft Security Essentials a try.

Regression because this has been addressed and fixed in December 2010:

Antivir FAQ (English)

Antivir FAQ (Deutsch)

This applies to the following version of Antivir:

Produktversion 10.2.0.696 29.06.2011
Suchengine 8.02.06.04 06.07.2011
Virendefinitionsdatei 7.11.11.27 07.07.2011
Control Center 10.00.12.31 28.06.2011
Config Center 10.00.13.20 28.06.2011
Luke Filewalker 10.03.00.07 28.06.2011
AntiVir Guard 10.00.01.59 28.06.2011
Filter 10.00.26.09 28.06.2011
AntiVir WebGuard 10.01.09.00 28.06.2011
Planer 10.00.00.21 02.05.2011
Updater 10.00.00.39 21.06.2011

Workaround for VirtualBox 4.0.8 regression bug

2011/05/25 Comments off

The current version of Oracle’s VirtualBox (4.0.8) has Version 4.0.8 had a regression bug which seems to only manifest itself when using Debian based hosts with 64-bit and Windows 7 64-bit guest system.

Here is the summary of the workaround posted as VirtualBox Ticket 8948:

  1. Edit the settings file to allow the VM to start again (Replace control characters in line 315 with 4.0.8).
  2. Start the Windows guest
  3. Run regedit
  4. Go to HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions
  5. Create a string key VersionEx (use exactly this spelling)
  6. Give it a reasonable value (ie 4.0.8)
  7. Shut down the VM.
  8. Repeat step 1
  9. Restart and shutdown windows guest again
That’s it.
Edit: This bug has been fixed in version 4.0.10 (released 2011-06-27).
Categories: linux, software, windows Tags: