Probleme mit MBCS-Projekten unter Visual Studio 2013

Wenn man unter Visual Studio 2013 ein C/C++ Projekt welches MBCS nutzt kompilieren möchte, wird man mit einer Fehlermeldung bedacht:

MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library.

Der Grund für dieses Problem ist, das der MFC Support für Multibyte Character Sets als veraltet markiert wurde und deshalb nicht mehr mit Visual Studio 2013 mitgeliefert wird. Zur Lösung des Problems kann die Anwendung auf Unicode portiert werden oder eine Zusatzbibliothek von Microsoft installieren.

Ribbon-Bibliothek für Windows Forms

Sogenannte Ribbons hatte Microsoft durch seine neueren Office-Versionen bekannt gemacht. Für WPF gibt es Ribbon-Unterstützung in Form des Namespaces System.Windows.Controls.Ribbon. Möchte man Ribbons allerdings in Windows Forms einsetzten, muss man Fremdkomponenten nutzen. Office Ribbon ist dabei eine solche Komponente.

Eines der Beispiel-Formulare der Bibliothek

Eines der Beispiel-Formulare der Bibliothek

Die Bibliothek Office Ribbon stellt Ribbon für Windows Forms zur Verfügung. Die Ribbon lassen sich im Aussehen anpassen, zur Zeit gibt es Themes welche das Aussehen von Office 2007 bis 2013 nachahmen. Lizenziert ist die Bibliothek unter der Microsoft Public License und damit freie Software. Das Projekt wird auf CodePlex gehostet und aktiv entwickelt.

Freier .NET Decompiler

Für .NET gibt es eine Menge Decompiler wie z.B. den .NET Reflector von Red Gate. Leider gab es lange keine freie Variante eines .NET Decompiler. Im Zuge der Ankündigung das der .NET Reflector künftig kostenpflichtig erhältlich ist, wurde Anfang 2011 mit dem ILSpy Projekt begonnen, dessen Ziel es ist einen vollwertigen Decompiler für .NET zu entwickeln.

ILSpy

ILSpy

Die in der Version 2.2 vorliegende Software ist mittlerweile stabil und für den produktiven Einsatz geeignet. ILSpy ist unter der MIT lizenziert und damit freie Software. Der Quelltext ist auf GitHub zu finden, die offizielle Seite ist unter ilspy.net zu erreichen.

AVI Dateien unter C# schreiben

Wenn man eine AVI Datei unter C# schreiben möchte, wird man feststellen das es zwar viele Wege gibt, aber keiner dieser Wege führt nach Rom. Jede vorgeschlagende Variante hat meist Abhängigkeiten, welche man nicht haben möchte. So wird bei vielen Varianten FFMPEG als DLL genutzt, bei anderen werden Windows DLLs genutzt, was dazu führt das der Quellcode nicht unabhängig von der Plattform ist. Abhilfe schafft hier die freie unter der MIT-Lizenz lizenzierte Bibliothek SharpAvi. Um eine AVI-Datei zu schreiben sind mit Hilfe der Bibliothek nur einige Zeilen Quelltext nötig:

//AviWriter anlegen
AviWriter writer=new AviWriter("test.avi");
writer.FramesPerSecond=25;

//Videostream anlegen
IAviVideoStream stream=writer.AddVideoStream();
stream.Width=1920;
stream.Height=1080;
stream.Codec=KnownFourCCs.Codecs.Uncompressed;
stream.BitsPerPixel=BitsPerPixel.Bpp24;

//Encode für Kompression anlegen
//Ohne Encoder wird die Datei unkomprimiert gepsiechert (stream.WriteFrame)
var encoder=new MotionJpegVideoEncoderWpf(stream.Width, stream.Height, 100);
var encodingStream=new EncodingVideoStreamWrapper(stream, encoder);

//Schwarzen Frame anlegen
byte[] frameData=new byte[stream.Width*stream.Height*3];

//Frames schreiben
for(int i=0;i<25; i++)
{
    encodingStream.WriteFrame(frameData, 0);
}

//Writer schließen
writer.Close();

In diesem Beispiel wird eine AVI Datei mit 25 schwarzen Frames erzeugt, was bei der angegebenen Framerate exakt einer Sekunde entspricht. Zu finden ist SharpAvi auf der offiziellen Webseite. Alternativ kann der Spiegel auf GitHub genutzt werden.

Xamarin Studio und MonoDevelop

Wenn man mittels Mono eine Anwendung entwickeln möchte, so wird man dafür in den meisten Fällen MonoDevelop oder Xamarin Studio nutzen. Xamarin ist die Firma welche Mono entwickelte (über Ximian und später Novel). Allerdings ist nicht wirklich klar wo sich die beiden IDE’s voneinander unterscheiden, den bei beiden scheint es sich im Kern um MonoDevelop zu handeln.

Xamarin Studio mit geöffnetem Projekt

Xamarin Studio mit geöffnetem Projekt

Wie auf der Mailingliste klargestellt wurde handelt es sich bei Xamarin Studio um eine MonoDevelop-Version welche um einige Add-Ins für iOS und Android sowie andere Funktionen erweitert wurde. Der Quelltext von MonoDevelop ist wie gehabt auf GitHub zu finden.