4 votes

F# script L'API SharePoint 2010 ne fonctionne pas

J'essaie quelque chose de très simple en F# pour tester l'interaction avec l'API SharePoint 2010. Je pense que je rencontre un problème général avec F#. Existe-t-il un moyen pour qu'un script F# puisse accéder à l'API de SharePoint 2010 ?

Je pense que mon problème est dû au fait que les scripts F# fonctionnent en 32bit, et que l'API SharePoint est en 64bit.

Voici un exemple du code que j'essaie d'exécuter :

#r "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.sharepoint.dll"
#r "System.ServiceModel.dll"

open System
open Microsoft.SharePoint

let GetListByUrl (listUrl:string) =
    use site = new SPSite(listUrl)
    use web = site.OpenWeb()
    let list = 
        if not (web = null) then web.GetList(listUrl)
    list

Dans l'éditeur de visual studio, l'erreur suivante est affichée : Le type System.ServiceModel.ChannelFactory`1 est requis ici et n'est pas disponible. Vous devez ajouter une référence à l'assemblage ...

Lorsque le script est exécuté, il affiche le message suivant : System.IO.FileNotFoundException : L'application Web à... n'a pas pu être trouvée. Vérifiez que vous avez tapé l'URL correctement...

C'est le message d'erreur que j'obtiens si j'essaie d'accéder à l'API SharePoint 2010 à partir d'un programme console c# 32bit. Si je change le programme de la console c# pour Any CPU, ce message n'apparaît pas.

Cependant, j'essaie de faire cela dans un script F# qui, je suppose, est en 32bit, alors comment puis-je contourner ce problème ?

De plus, comme il s'agit probablement d'un problème général avec F# scripts et les dlls 64bit, comment contourner le problème de la nécessité de référencer les dlls 64bit dans F# scripts ?

Editer J'ai utilisé corflags.exe dans le visual studio cmd prompt pour modifier le fsi.exe en 64bit. J'ai suivi ce guide : http://ig2600.blogspot.com/2010/05/making-fsharp-interpreter-fsi-run-in.html . Cela a semblé fonctionner, bien que la fenêtre interactive F# ait semblé plus lente. Cependant, lorsque j'ai exécuté le code ci-dessus dans le fsi 64bit, il a indiqué que sharepoint ne fonctionnait pas avec .net 4.0. Comment exécuter la fenêtre interactive F# dans .net 3.5 ?

Editer En raison de la réponse postée par F.Aquino dans laquelle il a dit que je devais ajouter une référence à System.ServiceModel, j'ai mis à jour le code pour l'ajouter.

Cela corrige les plaintes relatives à l'éditeur de visual studio qui continuent d'apparaître avec des lignes rouges gribouillées partout. Lorsque le script est exécuté, les résultats sont les mêmes, le script ne peut pas accéder à l'API sharepoint 2010, ce qui est le problème que je rencontre.

1voto

F.Aquino Points 6688

Vous devez ajouter une référence à System.ServiceModel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X