2009-03-12 11 views
3

Ich habe viele Lösungen (WSP) für SharePoint 2007 gemacht und ich habe fast alle erforderlichen Installationsschritte automatisiert, aber eine Sache kann ich nicht automatisieren.Wie resx Dateien im App_GlobalResources Ordner mit Lösungen (WSP)?

Wie kann ich eine Lösung erstellen, die Ressourcen (resx) -Dateien in den App_GlobalResources-Ordner der virtuellen Anwendung legt?

Vielen Dank im Voraus.

Antwort

6

Sie müssen einen Feature-Empfänger schreiben, der die Dateien kopiert, da sie nicht direkt über SharePoint-Konfigurationsdateien bereitgestellt werden können.

Ich fand diese Blog-Post nützlich, wenn ich dies tun musste: SharePoint Resources, Types, Use and Deployment

2

Die Rahmenlösung nicht Bereitstellung auf den App_GlobalResources Ordner unterstützen.

Sie müssen einen SharePoint-Timerjob schreiben, der die Dateien kopiert. Ein Timerjob läuft auf allen Servern in der Farm, so dass jeder Server die Ressourcendateien kopiert. Worauf Sie achten sollten, ist der Kontext (Domänenkonto), in dem Sie Ihren Timerjob ausführen. Um den Timerjob zu starten, müssen Sie einen Farmaccount verwenden - das Konto, das die Webanwendung ausführt, ist nicht genug (Dies beinhaltet RunWithElevated ...) - Lange Rede kurzer Sinn - Starten Sie den Timerjob von einer Farm-Funktion oder einer versteckten SiteCollection-Funktion (Ausgeblendet) Funktionen werden als Farmkonto ausgeführt).

mehr Inspiration finden Sie hier:

Creating Custom Timer Jobs in Windows SharePoint Services 3.0

SharePoint Resources, Types, Use and Deployment (Der Link DylanW bezeichnet)

+0

glauben Sie, dass das nicht ein timerjob nicht die richtige Lösung ist? Wie es hier heißt, ist diese Lösung wie das Schießen mit Kanonen, um Fliegen zu töten (Entschuldigung für die Übersetzung vom Spanischen ins Englische). – jaloplo

+0

In einem Einzelserver-Setup können Sie einfach etwas Code schreiben, um die Dateien direkt in den Feature-Empfänger zu kopieren. Aber in einem Multi-Server-Setup ist die einzige Möglichkeit, sicherzustellen, dass die Ressourcendateien auf jedem Server kopiert werden, mit einem Timerjob –

+0

, da ein Timerjob auf jedem Server läuft und der Code nur auf dem Server läuft, auf dem das Feature aktiviert ist.Es gibt eine alternative Lösung, bei der Sie Feature-Heften verwenden (wird auch im Link zu SharePoint-Ressourcen, Typen, Verwendung und Bereitstellung erwähnt) - aber ich denke, ein Timerjob ist die beste Lösung für den Job. –

1

Sie könnten den stsadm Befehl copyappbincontent verwenden, die Dateien kopiert Frpm 12/Ressourcen zu App_GlobalResources. Ihr WSP (VS-Projekt) muss also Ihre resx-Dateien in diesem Ordner ablegen. Ich benutze eine Lösung, bei der ich meine resx-Dateien in einen Ordner namens Resources im .csproj-root lege (um die seltsamen Namespaces zu vermeiden, die mit 12/Resources kommen) und dann XCopy (die resx-Dateien) an 12/Ressourcen, wenn ich baue.

CopyAppBinContent wird dann dem Bereitstellungsprozess hinzugefügt (ein Schritt in einer BAT-Datei).

CopyAppBinContent hat einige Probleme, wenn auf einer Farm ausgeführt wird und um eine benutzerdefinierte SPJobDefinition zu verwenden, die das Starten dieses Befehls in der Farm behandelt.

1

ich eine resx-Datei in den Ordner App_GlobalResources nach rechts hinzugefügt habe das Projekt klicken und die Wahl: - Neues Element hinzufügen - leeres Element namens ‚Ressourcen‘ - Dann eine neue resx Datei zu den neu geschaffenen ‚Ressourcen‘ hinzufügen Ordner - dann auf der resx Datei ändern, um den ‚Deployment Typ‘ auf ‚AppGlobalResource‘

Matt