Aus der Praxis – Safe Control Eintrag in eine SharePoint 2010 Solution einfügen
avatar

In einem aktuellen Projekt wurden von uns Controls für die veränderte Darstellung der SharePoint 2010 Navigation entwickelt. Diese Controls wurde per Delegate Methode in die Vorhandene MasterPage eingefügt.

Damit dieses Verfahren funktioniert, müssen die Controls in der web.config der SharePoint Webanwendung als “sicher” registriert werden. Dazu ist der Knoten “SafeControls” unterhalb von “SharePoint” vorgesehen. Dort werden die Angaben zu Assembly, Namespace und Klasse des Controls hinterlegt.

Dieses Vorgehen wird von Visual Studio bei der Erstellung eines Webpart automatisch unterstützt, der entsprechende Eintrag in der Manifest-Datei der Solution wird automatisch erstellt. Für selbst erstellte Controls gilt dies allerdings nicht. Um nun solch einen Eintrag manuell zu erzeugen, hat man 2 Möglichkeiten:

  • Manuelle Anpassung der Manifest-Datei
  • Von Visual Studio verwaltete Anpassung der Manifest-Datei

Die erste Variante hat den Nachteil, dass die manuellen Änderungen verloren gehen, wenn die Manifest-Datei neu autogeneriert werden soll. Das führt zu mehr Wartungsaufwand und Fehleranfälligkeit.

Ich betrachte daher den zweiten und aus meiner Sicht besseren Ansatz und zeige nun, wie man per Einstellung in Visual Studio einen Safe Control Eintrag erzeugt. Dazu geht man wie folgt vor:

Öffnen der erweiterten Ansicht des SharePoint Packages:

image

 

Danach hinzufügen einer weiteren Assembly und Auswahl des aktuellen Projekts:

image

image

An dieser Stelle können wir glücklicherweise mit SharePoint Tokens arbeiten, so dass ich die folgenden Werte eingegeben habe:

Namespace –> $SharePoint.Project.AssemblyFileNameWithoutExtension$

Assembly Name –> $SharePoint.Project.AssemblyFullName$

Schauen wir nun auf die Manifest-Datei des Solution Packages, so wird dort der eben erzeugt Safe Control Eintrag erzeugt:

image

Unglücklicherweise sind nun aber 2 Einträge für die Assembly selbst vorhanden. Das ist natürlich mehr als unschön (Verhalten außerdem unbekannt), kann aber sehr einfach gelöst werden.

In den Projekt Einstellungen wurde der Schalter “Include Assembly In Package” dafür vorgesehen:

image

Sobald er auf “False” gestellt wurde, verschwindet die doppelte Referenz der Assembly aus der Manifest-Datei der Solution.

3 Gedanken zu “Aus der Praxis – Safe Control Eintrag in eine SharePoint 2010 Solution einfügen
avatar

  1. Pingback: Aus der Praxis – Safe Control Eintrag in eine SharePoint 2010 Solution einfügen - SharePoint Blogs in German - Bamboo Nation

  2. Hi,
    cooler post,

    ich habe zur Zeit das fast das gleiche Problem. Ich will bei meine SharePoint Projekt Controls für die Navigation überschreiben.

    Ich bin schon so weit, dass ich das ich meine Controll zum SafeControll hinzugefügt und erflogreich bereit gestellt habe aber auf der sharepoint seite passiert nicht.
    Könntes Sie mir mal bitte eine bespiele Projekt schicken, wo sie mal das Data Controll für die Navigation überschreiben?

    Mit freunldichen Grüßen

    Michael Gottschlich

    • Hallo Herr Gottschlich,

      für die Anpassung der Navigation gibt es grundsätzlich 2 Möglichkeiten:
      – Anpassung der MasterPage
      – Überschreiben per Delegate Control

      Mein persönlicher Favorit ist dabei das Delegate Control. Hierfür hält die MSDN eine gute Beschreibung bereit:
      http://msdn.microsoft.com/de-de/library/ms432695%28v=office.14%29.aspx
      Allerdings ist hier die Grenze gesetzt, dass das Control an sich nicht ausgetauscht werden kann, sondern nur die Datenquelle.

      Wenn Sie das Control der Navigation ersetzen wollen, dann müssen Sie die MasterPage anpassen.

      Viele Grüße,
      Tobias Schütt

Schreibe einen Kommentar