Claudio Brotto

luglio 2008 - Posts

Modificare le proprietà delle web part senza il tool pane

Segnalo questo post di Rob Nowik che propone una soluzione, semplice ed efficace, per modificare le property di una web part al di fuori del "classico" tool pane.

Questo approccio può risultare assai utile, ad esempio, quando le proprietà che si vogliono gestire richiedono un cruscotto grafico particolarmente oneroso in termini di spazio sulla pagina, tanto da rendere insufficiente - o comunque troppo esiguo - il pannello laterale.

Posted: lug 19 2008, 10.21 by devlizard | with no comments
Filed under:
STSADM poster

Da qualche tempo sono stati pubblicati due "poster" che illustrano graficamente le operazioni e le proprietà disponibili per la gestione di un'infrastruttura SharePoint via STSADM.

Per WSS: jpg, png, Visio

Per MOSS: jpg, png, Visio 

Molto bene, così alla Microsoft SharePoint Conference 2008 io e Igor ve li mostreremo *tutti* :-O

SharePoint Solution e Shared Assemblies

Sono capitato un po' per caso a leggere questo post su Bamboo Nations (che, devo dire, sta scalando rapidamente la mia feed-parade).

Riporto qui un brevissimo e significativo excerpt:

[Deploying SharePoint Solutions]

So if you decide to put anything into the GAC make sure it's NOT shared by anyone else since then it will break if you retract one of the solutions....

Dunque, un minimo di spiegazione !

Il meccanismo di deploy delle solution SharePoint consente di installare, come parte del package, assembly nella Global Assembly Cache.

In questo senso (e in realtà non solo in questo senso, estendendo il discorso ad altri tipi di risorse o di location di installazione) le solution possono essere definite senza troppo margine di interpretazione "l'MSI di SharePoint".

Con le funzionalità aggiuntive che la piattaforma richiede (allineamento garantito tra i server della farm, per dirne una). Ma, anche, con qualche funzionalità in meno.

Si parlava di GAC.

La GAC è utilizzata (e pensata) come storage per assembly condivisi fra più applicazioni. Quando più applicazioni tentano di installare un assembly in GAC, possono richiedere la memorizzazione di riferimenti (si chiamano trace references) in modo tale da evitare disinstallazioni forzose e conseguenti, brutali crash.

Ho scritto possono ... perchè ovviamente ci sono le eccezioni.

Una di queste (purtroppo) è appunto il meccanismo di deploy delle solutions.

Prova del nove (seguire passo passo - uso le VSeWSS Extensions per rapidità, benissimo qualsiasi altro tool o il tutto a manina).

1) Creare un progetto class library, anche vuoto va benissimo (purchè compili !). Nell'esempio l'ho chiamato SomeSharedAssembly.

2) Firmare l'assembly (il metodo più comodo è dalle proprietà del progetto Visual Studio, voce Signing).

3) Build.

4) Creare uno SharePoint Empty Project (SolutionOne).

5) Add->Existing Item->La dll creata al punto 3.

6) Modificare il file manifest dela solution. Se avete usato le VSeWSS potete utilizzare il pane "WSP View", doppio click su manifest.xml. Ottenete qualcosa del genere (in bold la riga da aggiungere, ovviamente cambiando il nome della DLL creata al punto 3):

<?xml version="1.0" encoding="utf-8"?>
<Solution
    SolutionId="961c3359-9b2b-4c29-86ed-b1a6399de968"
    xmlns="
http://schemas.microsoft.com/sharepoint/">
  <Assemblies>
        <Assembly Location="SolutionOne.dll" DeploymentTarget="GlobalAssemblyCache" />
        <Assembly Location="SomeSharedAssembly.dll" DeploymentTarget="GlobalAssemblyCache" />
    </Assemblies>
</Solution>

7) Build e deploy della solution.

8) Ripetere i punti 4..7, creando una solution identica con nome diverso (SolutionTwo, diciamo).

9) Ci troviamo con due solution installate e deployate (ripeto, se avete usato altri tool o avete scelto la strada "raw", alcuni dei punti precedenti possono cambiare, in particolar modo la creazione del package WSP e la sua successiva installazione).

10) Command prompt di Visual Studio (giusto per avere impostate le variabili d'ambiente) e lanciamo gacutil.exe (credo che gacutil non abbia bisogno di presentazioni, è *il* tool usato per esaminare ed interagire con la GAC via linea di comando).

11) gacutil -l SomeSharedAssembly. L'output dovrebbe indicare che è presente l'assembly richiesto:

D:\Windows\system32>gacutil -l SomeSharedAssembly
Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  SomeSharedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38b02c7e6
914e65f, processorArchitecture=MSIL

Number of items = 1

12) stsadm -o retractsolution -name solutionone.wsp -immediate (controllate di avere stsadm nel path, altrimenti lo dovete invocare con il suo percorso completo, [12]\bin)

13) stsadm -o execadmsvcjobs (se non volete aspettare nemmeno quei pochi secondi affinchè il timer job che effettua il retract (= undeploy) della solution venga eseguito

14) Di nuovo gacutil -l SomeSharedAssembly.

15) Osservare e riflettere ...

Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:

Number of items = 0

Abbiamo due solution che utilizzano lo stesso assembly condiviso. Facendo il retract di una delle due (a caso) abbiamo disinstallato l'assembly dalla GAC ... lasciando l'altra in braghe di tela :-O

Posted: lug 01 2008, 03.17 by devlizard | with no comments
Filed under: ,