Daniel's Blog

.NET and SharePoint Development
Facebook
View my Facebook profile
Google+
View my Google+ profile
Twitter
View my Twitter profile
XING
View my XING profile

Basta! Spring 2013 – Präsentation und Demos

An dieser Stelle möchte ich mich erst einmal Bedanken. Trotz eines langen Konferenztages war die Session von Fabian Moritz und mir zum Thema SharePoint, Office 365 und Windows Azure am Dienstag Abend sehr gut besucht.

Die Session war in drei Teile aufgeteilt. Im ersten Teil haben wir gezeigt wie mit SharePoint auf WCF Dienste zugegriffen werden kann, die in Windows Azure gehostet sind.

  Windows Azure WCF Service Demo - PictureWatermarkService

Im zweite Teil haben wir den Windows Azure Access Control Service benutzt um uns mittels Google ID an SharePoint anzumelden. Die Einrichtung des Trusted Identifiers für SharePoint ist ein wenig knifflig, deshalb habe ich hier die Beispiel-Skripte.

  makeAzureAcsCertSample.bat

  ExportCert.ps1

  AddTrustedIdentifier.ps1

Im letzten Teil ging es um das Bereitstellen einer SharePoint-App in Windows Azure. Die App wurde in ASP.NET MVC geschrieben und benutzt auch eine SQL Azure Datenbank zum speichern der Daten.
In SharePoint Online haben wir einen AppPart bereigestellt, der den Zugriff auf die in Azure gehostete App veranschaulicht.

  Azure Hosted SharePoint App - PasswordStore40

Zu guter Letzt gibt es hier noch die Präsentation zum download.

  SharePoint, Office 365 und Azure - Cloud-ready-Lösungen für SharePoint programmieren

Ich hoffe wir konnten einen kleinen Einblick in die Welt des Cloud-Computings mit Windows Azure und SharePoint zeigen.

Windows Azure und die Assembly msshrtmi

Vor kurzem wollte ich ein etwas älteres Windows Azure Cloud Service Projekt upgraden und weiterentwickeln. Beim dem Projekt handelt es sich um eine Website die mit dem Juni 2012 SDK (Version 1.7) entwickelt wurde. Deshalb hab ich erst einmal alle Referenzen im Projekt geupdatet, damit ich Version 1.8 (Oktober 2012) des SDKs benutzen kann. Man möchte ja immer auf dem aktuellsten Stand bleiben. ;)

Das Upgrade verlief reibungslos, was dank NuGet auch nicht besonders schwierig ist, und die Website lief auch noch wunderbar mit dem Emulator und dem IIS Express. Beim Aufruf der Website in Azure kam es aber zu diesem Fehler:

Could not load file or assembly ‘msshrtmi, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ or one of its dependencies. The system cannot find the file specified.

Sucht man bei Google nach “msshrtmi” findet man einige Beiträge zu diesem Thema.
In den meisten wird beschrieben, dass man das Projekt aufräumen soll und in der Projektdatei (csproj-Datei) sämtliche PlatformTarget-Einträge herauslöschen sollte. Zusätzlich muss die Datei msshrtmi.dll per MS-Build in den bin-Ordner der WebApplication kopiert werden.

Bei mir hat das alles nicht funktioniert.
Deshalb hab ich ein bisschen in meiner web.config herumgespielt. Und das mit Erfolgt!
Hat man die msshrtmi-Assembly (“C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\bin\runtimes\base\x64\msshrtmi.dll” beim Oktober 2012 SDK) als Referenz zum Projekt hinzugefügt reicht ein Eintrag für ein Assembly Binding von Version 1.8 auf die Version 1.7!

<dependentAssembly>
	<assemblyIdentity name="msshrtmi" publicKeyToken="31bf3856ad364e35" />
	<bindingRedirect oldVersion="1.0.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>

Danach lief meine Website wieder wie gewollt.
Mehr Infos zu Assembly Bindings gibts in der MSDN unter http://msdn.microsoft.com/library/vstudio/dd255412.

Ich hoffe ich konnte dem ein oder anderen mit diesem Tip helfen.
Noch viel Spaß mit Windows Azure!

Geolocation-Feld in SharePoint 2013

In der neuen SharePoint Version, SharePoint 2013, gibt es die Möglichkeit Positionsfelder, sogenannte Geolocation Fields, zu benutzen um Standorte zu speichern. Die Visualisierung der Standardorte wird danach automatisch von Bing Maps übernommen.

Geolocation Feld in der einer Standardansicht

Bevor das Ganze benutzt werden kann muss ein bisschen Konfigurationsaufwand betrieben werden.

SQL Server Feature installieren

Damit Geolocation-Daten in der SharePoint Datenbank abgespeichert werden können muss für den SQL Server ein Feature aus dem SQL Server Feature Pack nachinstalliert werden. Das Feature hat den Namen SQL Server System CLR Types, Dateiname SQLSysClrTypes.msi, und kann für den SQL Server 2012 hier heruntergeladen werden (für SQL Server 2008 R2 hier).

Bing Maps Key registieren

Wenn die Installation des Features abgeschlossen ist muss noch ein Bing Maps Key registiert werden. Diese Funktion ermöglicht erst die Vorschau in einer Bing Map. Einen Bing Map Key kann man sich im Bing Maps Account Center erstellen.
Über den PowerShell-Befehl Set-SPBingMapsKey wird der erstellte Key in SharePoint registrieren. Die Registrierung ist für eine komplette Farm oder nur für eine bestimtme Website möglich.

Set-SPBingMapsKey –BingKey "Bing Maps Key"

Feld erstellen

Ist auch diese kleine Konfigurationshürde genommen kann ein Geolocation-Feld in SharePoint angelegt werden. Leider ist das Anlegen dieses Feldtyps nicht über die UI möglich. Ich habe dafür PowerShell benutzt und das hat sehr gut geklappt.

$web = Get-SPWeb "Web-URL"
$web.Fields.AddFieldAsXml("<Field Type='Geolocation' DisplayName='Geolocation' />")

Nun kann das Feld zu jeder beliebigen Liste hinzugefügt werden.

Geolocation Feld im Bearbeitungsmodus

Liste mit Geolocation-Feld in einer Maps View Ansicht

SharePoint Conference 2012

Vom 12. bis 15. November fand in Las Vegas die Microsoft SharePoint Conference statt und ich hatte das Glück Live dabei zu sein.

Meine Berichte zu der Konferenz können auf der it-republik Seite gelesen werden.

Die Konferenz ist vorbei und ich habe noch einen Tag in Vegas.
Mal schauen was man hier noch so alles anstellen kann :) .

Ribbon Commands wiederverwenden

Möchte man SharePoint Ribbon Commands wiederverwenden, um z.B. einen Button in einem PageLayout mit einer Funktion des Ribbons auszustatten, kann man das sehr einfach über eine Zeile Javascript-Code bereitstellen:

SP.Ribbon.PageManager.get_instance().get_commandDispatcher().executeCommand(<CommandName>, <OptionalParameters>);

 

Die Commands kann man sehr gut aus der CMDUI.XML lesen.

Hier ein Beispiel für den Ordner erstellen Dialog:

SP.Ribbon.PageManager.get_instance().get_commandDispatcher().executeCommand("NewFolder",null);