Tag Archives: c#

Outlook & C# Serie – Introduction

In meinem letzten privaten Projekt habe ich als PoC einen Prototypen gebaut welcher den Windows Live (oder Outlook.com) Kalender mit Outlook 2013 synchronisiert. Dabei bin ich auf der Outlook 2013 Seite auf einige “Hindernisse” gestossen. Diese Hindernisse und natürlich wie sie zu überwinden sind, stelle ich in der “Outlook & C# Serie” vor.

Mit diesem Post wird erst einmal der Grundstein gelegt. Jeder Anfang ist schwer, deshalb ganz allgemein: Wie hole ich Daten aus meinem Outlook?

Es ist egal ob ein Add-in geplant ist oder ob von einer externen Applikation bsp. WPF auf Outlook Elemente zugegriffen werden soll, der Code ist derselbe. Dafür wird folgendes benötigt.

  1. VSTO (Visual Studio Tools for Office) Installieren:
    http://www.microsoft.com/en-us/download/details.aspx?id=23656

  2. Referenz hinzufügen
    Falls nun ein Add-in geschrieben werden soll, einfach ein Projekt des entsprechenden Typs erstellen. In diesem Fall soll jedoch eine externe Applikation entwickelt werden. Dafür wird ein neues Projekt erstellt und die folgende DLL referenziert:
    C:Program Files (x86)Microsoft Visual Studio 12.0Visual Studio Tools for OfficePIAOffice15Microsoft.Office.Interop.Outlook.dll

  3. Zugriff auf Outlook
    Um Zugriff auf das Outlook Objekt modell zu erhalten wird eine neue Instanz der folgenden Klasse erstellt “Microsoft.Office.Interop.Outlook.Application”.

Outlook ist in Folder organisiert. Hier ein Beispiel wie der Kalender Folder geholt werden kann:

var appointmentsFolder = (Folder)outlook.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);

Eine Übersicht über das Objektmodell gibt es hier: http://msdn.microsoft.com/en-us/library/ms268893.aspx

PowerShell Cmdlet erstellen und benutzen

Das CRM mit seiner umfangreichen API bietet sich gerade zu an um automatisiert zu werden. Microsoft liefert bereits einige Cmdlets mit, diese ermöglichen jedoch nur den Zugriff auf Aktionen welche über den Deployment Service verfügbar sind. Andere Aufgaben wie z.B. einen neuen User erstellen und berechtigen, können damit nicht automatisiert werden. Die PowerShell lässt sich jedoch ganz leicht erweitern. Wie das geht, zeige ich in diesem Post.

Continue reading

OrganizationServiceProxy mit lokalem User

Wie kann ich auf eine Organization bzw. einen Organization Service zugreifen und dabei die Credentials des aktuellen Benutzers verwenden?

var credentials = new ClientCredentials();
credentials.Windows.ClientCredential =
  CredentialCache.DefaultNetworkCredentials;
IOrganizationService organizationService = 
  new OrganizationServiceProxy(new Uri(url), null, credentials, null);

C# – Organisation mit dem Deployment Service erstellen

Seit der Version “CRM 2011” bietet Microsoft Dynamics CRM eine API die es erlaubt die CRM Installation zu managen. Diese API wird “Deployment Service” genannt und als eigener Webservice zur Verfügung gestellt. Dieser Post zeigt wie mit Hilfe dieses Services eine neue Organization erstellt werden kann.

Continue reading

Get Types by Interface

Die Anforderung ist relativ einfach und kommt immer wieder. Alle Types welche ein bestimmtes Interface implementieren sollen zurückgegeben werden.

var interfaceType = typeof(IMyInterface);
var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(t => t.GetTypes())
    .Where(t => interfaceType.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract);

Das Snippet liefert dabei nur Types zurück die selbst kein Interface sind und Instanziert werden können (nicht abstrakt).