Si l'outil est faire des trucs vous ne comprenez pas, et puis il ne parvient pas à l'étape n d'un nombre indéterminé d'étapes, vous êtes morts dans l'eau…
</fin>
Si l'outil est faire des trucs vous ne comprenez pas, et puis il ne parvient pas à l'étape n d'un nombre indéterminé d'étapes, vous êtes morts dans l'eau…
</fin>
J'étais une fois de plus artisanat fichiers ADF BDC à la main (alors que je peux construire mon "Descendez ma pelouse!" cred) et frapper cette belle erreur:
« Application définition importation échoué. L'erreur suivante s'est produite:"
Comme vous pouvez le voir, Il y a une erreur, mais … il ne va pas me dire ce que c'est.
Dans mon cas, la question s'est avéré que j'avais commencé avec un ADF fonctionnelle pour un projet différent qui connecté à une base de données et exécuter une requête SQL sur une vue. Dans ce nouveau projet, J'appelle une méthode de service web. J'avais supprimé les trucs spécifiques de DB et ajouté mes trucs de service web, mais n'a pas pu mettre à jour les <LobSystem>de l'attribut type. Je suis passé il à "WebService" et heureusement, je me suis déplacé d'erreurs d'importation plus récents et plus excitant, qui ont été traitées en temps opportun.
Voici le mauvais LobSystem:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Type = "base de données"
Version = "1.0.0.0" Nom = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
C'est correct:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Type = "WebService"
Version = "1.0.0.0" Nom = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
</fin>
MISE À JOUR: Cette annonce de MSDN a des observations intéressantes de JXJ basé sur son, principalement négatif, expériences aller dans cette voie: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1
Nous avons un scénario d'entreprise où nous avons besoin de lier les deux bibliothèques de documents via un commun "ID de document" champ.
Nous utilisons souvent une colonne de recherche à implements liens comme ceci. Il y a plusieurs inconvénients à colonnes de recherche, trois d'entre eux sont:
Soutenu par la BDC, Nous pouvons utiliser une "données d'entreprise" type de colonne et il fournit une recherche de qualité supérieure et permet même de plusieurs colonnes de données apparaissent dans les affichages de liste.
J'ai eu quelques succès préliminaire avec cette approche et l'intention d'écrire davantage à ce sujet.
Si vous avez travaillé cet angle avant et que vous avez des commentaires, s'il vous plaît partager!
</fin>
J'ai travaillé avec BDC aujourd'hui, codage de fichiers ADF à la main et me générant des erreurs. Une telle erreur:
Importation de définition d'application a échoué. L'erreur suivante s'est produite: Peut pas charger le Type décrit par la propriété TypeName de TypeDescriptor. Nom du paramètre: typeName erreur a été rencontrée juste avant la ligne ou: 35’ et la Position: « 20 ».
MOUSSE affiche cette erreur lorsque j'ai essayé d'importer le fichier XML de l'ADF.
J'ai fait des recherches sur les Internets et trouvé que j'étais référençant le nom d'instance LOB (de la <LobSystemInstance>) dans mon <TypeDescriptor> nœud lorsque je devrais avoir référencé le nom LOB lui-même (De <LobSystem>).
Mauvais:
<TypeDescriptor TypeName="Conchango.KeyValue, Nom de l'Instance LOB" Nom = « KeyValue »>
Corriger:
<TypeDescriptor TypeName="Conchango.KeyValue, Nom de métier" Nom = « KeyValue »>
Espérons que celui-ci sauve quelqu'un, une heure ou deux de temps.
</fin>
Je travaillais sur une fonctionnalité la semaine dernière qui ajouterait des récepteurs d'événements à une instance de liste spécifique. (J'ai expliqué dans un blog un peu sur ce récepteur liste ici).
À l'aide de la ligne de commande, Je pourrais installer la fonctionnalité sans erreur (mais pour l'erreur cachée, voir ci-dessous). Quand j'ai essayé de déployer la fonctionnalité sur le site, MOUSSE s'est plaint d'une FileNotFoundException »" erreur. Ce blog décrit comment je l'ai résolu.
C'est l'erreur qui mousse qui m'a été montré dans le navigateur web:
Fonctionnalité ' b2cb42e3-4f0a-4380-boulette-1ef9cd526f20’ ne pourrait pas être installé car le chargement de l'assemblage de récepteur événement « xyzzyFeatureReceiver_0" n'a pas: System.IO.FileNotFoundException: N'a pas pu charger fichier ou l'assembly ' xyzzyFeatureReceiver_0’ ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Nom de fichier: ' xyzzyFeatureReceiver_0’
à System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Preuve assemblySecurity, Assemblée locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booléenne, ForIntrospection booléenne)
à System.Reflection.Assembly.InternalLoad(AssemblyRef AssemblyName, Preuve assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booléenne)
à System.Reflection.Assembly.InternalLoad(String assemblyString, Preuve assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booléenne)
à System.Reflection.Assembly.Load(String assemblyString)
à Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
AVT: Assemblage liaison journalisation est activée OFF.
Pour activer l'Assemblée lier échec enregistrement, Définissez la valeur de Registre [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) À 1.
Note: Il y a quelque peine de performance associé avec un enregistrement d'échec lier l'Assemblée.
Pour désactiver cette caractéristique, Supprimez la valeur de Registre [HKLMSoftwareMicrosoftFusion!EnableLog].
Je sais pas comment pour délibérément provoquer cette erreur: ne pas installer l'assembly dans le GAC. Mais, C'est dans le GAC. J'ai normalement installer des assemblys dans le global assembly cache en les faisant glisser dans le c:\dossier de WINDOWSassembly à l'aide de l'Explorateur windows. Je n'ai jamais senti 100% confortable de faire cela parce que j'ai toujours pensé que gacutil existait pour une raison … alors j'ai essayé qui. Il ne faisait aucune différence.
J'ai cherché les Internets et trouvé ce post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
L'affiche est arrivé d'utiliser la même racine bit du code (extrait du livre à l'intérieur de WSS dans cette liste) donc ça a été un signe d'espoir. Cependant, la suggestion de décorer l'ensemble avec une [Assemblée: ] directive n'a pas de sens pour moi. J'ai essayé quand même et j'avais raison. Il ne faisait aucune différence.
Puis j'ai remarqué que ma définition de la classe n'était pas publique. J'ai rendue publique et qui ne faisait aucune différence.
Prochaine, Je suis allé à la peine de permettre à le "Assemblée lier échec Journal" (en suivant les instructions utiles et exactes fournies) et c'est où les choses ont commencé à devenir intéressant. Ce journal me montre que le runtime recherche dans le monde sur ce serveur pour mon montage. Il semble même être recherchant dans mon armoire à pharmacie. Mais … il ne sera pas chercher dans le GAC.
J'ai mis sur ma veste hiver et aller chercher les Internets à nouveau et de trouver que quelqu'un a eu ce problème aussi. La longue discussion dans cette signalisation peters au large en rien et je ne peux pas trouver une solution.
Je propose mon Assemblée dans un des endroits que le journal prétend c'est à la recherche et j'ai progresser un peu plus. Je suis récompensé avec une nouvelle erreur dans le navigateur lorsque j'essaie d'activer la fonction:
Impossible de créer l'objet récepteur feature d'assembly « xyzzyFeatureReceiver_0 », tapez "Conchango.xyzzyFeatureReceiver" pour la fonction b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valeur ne peut pas être null.
Nom du paramètre: type
à System.Activator.CreateInstance(Type de type, NonPublic booléenne)
à System.Activator.CreateInstance(Type de type)
à Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Temps pour un dernier voyage à l'Internets!
Cette fois j'ai trouver, assez prévisible, que MOSS publie cette erreur parce que l'assembly n'est pas dans le GAC.
Je veux obtenir quelque chose de positif de cela et essayer de se sentir un peu fière que j'ai créé le Fugitif des assemblys MSIL, mais il ne fonctionne pas. Je suis tout simplement agacé. Je me surprends murmurant « œuf ou la poule" sous mon souffle.
Je décide finalement de botté de dégagement. Je crée un projet entièrement nouveau et copier/coller le code du projet de non-travail incredible-cloaked-from-the-GAC-assembly plus à ce nouveau projet. (Je cherche un drapeau de génération appelé quelque chose comme "cacher de si installé dans le GAC de liaison d'assembly" mais n'y parvient).
J'ai installer la fonctionnalité et l'activer et … Il fonctionne! Si, Après tout ça, J'ai dû fondamentalement ' redémarrer’ mon projet. Il s'agit d'une autre raison pourquoi je déteste les ordinateurs.
J'ai appris quelque chose d'utile de ce. J'avais été l'installation en utilisant la ligne de commande stsadm tout au long de la journée et utilise le «-force" option par habitude. Pour une raison quelconque, Je n'ai pas utilisé le - option de force quand j'ai installé le nouveau projet. Cette heure, Je l'ai fait en fait, vraiment oublier de copier l'assembly du projet de cette nouvelle dans le global assembly cache. Comme un résultat, J'ai reçu cette FielNotFoundException"" erreur. Cette heure, J'ai obtenu à partir de stsadm, pas quand j'ai essayé d'activer la fonctionnalité via le navigateur web. Si, -Force joue deux rôles. Il vous permet de ré-installer une fonctionnalité existante. Il vous permet également d'installer une fonctionnalité de buggy qui ne peuvent pas travailler à l'exécution par la suppression de l'erreur. Il dit probablement autant dans l'aide quelque part, mais j'ai jamais remarqué.
</fin>
===
Blague femme bonus:
Deux collègues masculins sortent pour déjeuner. L'un d'eux dit à l'autre, « Je lâche un lapsus embarrassant l'autre soir."
"Un lapsus? Qu'est-ce que c est?"
"Bien, Quand nous avons fini de manger, la serveuse est venu et a demandé comment nous avons aimé notre repas. Je voulais dire dire, "J'ai adoré les poitrines de poulet’ mais au lieu de cela, j'ai dit « J'ai aimé vos seins ». J'étais tellement gêné."
"Ah !," son collègue a répondu. "J'ai eu la même chose m'arriver ce week-end avec ma femme. Nous mangions le petit déjeuner, que je voulais dire pour lui demander de passer le beurre, mais au lieu de cela, j'ai crié à lui, ' Vous ruiné ma vie!’"
</fin>
MISE À JOUR (04/08/08): Il me semble avoir résolu ce problème. La ligne de commande, J'ai couru « c:\windowssystem32lodctr/r" Selon une entrée parle de InstallShield problèmes et qui semble il ont résolu pour moi.
J'ai remarqué que dernièrement, mon ventilateur de bureau/serveur jamais s'éteint. Je sais qu'il utilisé pour éteindre. J'ai pris un moment pour vérifier dehors remarqué que l'un processus VMware s'exécutait un uniforme 20% utilisation sur l'un de la CPU. J'ai vérifié le journal des événements et a vu ces erreurs dans le journal des applications qui passe des dizaines de fois par minute:
Windows ne peut pas charger le compteur extensible DLL UGatherer, le premier DWORD dans la section données est le code d'erreur Windows.
Windows ne peut pas charger le compteur extensible DLL UGTHRSVC, le premier DWORD dans la section données est le code d'erreur Windows.
Windows ne peut pas charger le compteur extensible MSSCNTRS DLL, le premier DWORD dans la section données est le code d'erreur Windows.
Si je percer les détails d'un de ces messages, J'obtiens ceci:
Source: Perflib
Type: Erreur
Catégorie: Aucun
ID de l'événement 1023
J'ai fait quelques recherches et il y avait une idée, ça pourrait être un problème d'autorisation en matière d'accès aux dll en question. J'ai joué un peu avec ce genre de choses, mais ne pouvait affecter les choses de manière positive, alors j'ai laissé tomber là-dessus.
VMware avait été me harceler à effectuer une mise à jour depuis un certain temps, donc je note la version que j'avais installé (apparemment « 1.0.1 construire 29996 ») et fait la mise à jour. Cela m'a surclassé à v1.04. Malheureusement, Il n'a pas fixé la question.
Je ne peux arrêter le nombre fou de messages adressés à mon journal de l'application si j'arrête un service appelé « Service d'autorisation de VMware ». Cela m'empêche d'utiliser le logiciel VMware, donc … pas cette option grande.
Le système d'exploitation est Windows XP 64 bit.
Je ne pense pas que c'est toujours arrivé, mais je ne me rappelle aucun événement particulier qui aurait pu conduire à elle.
C'est pourquoi je déteste les ordinateurs.
</fin>
MISE À JOUR: Cela fonctionne mais il y a des limites importantes qui sont décrites dans les commentaires. Cela peut toujours être utile dans certaines circonstances.
MISE À JOUR 2: Dans mon projet actuel, les utilisateurs toujours téléchargement les documents. Comme un résultat, Je ne cours pas dans un problème où MS Word est en cours d'exécution et pense que le fichier a été renommé à ce sujet. J'ai couru dans un problème, « le fichier a été modifié par quelqu'un d'autre" et résolu ce problème par un indicateur de type simple sémaphore. Besoin de l'utilisateur de modifier un champ de données méta de sa valeur par défaut à autre chose. L'itemupdated() récepteur examine une valeur valide il avant d'effectuer réellement la renommer et depuis, Je n'ai eu aucun problème. Votre kilométrage peut varier.
J'ai une exigence client de changer le nom des fichiers téléchargés vers une bibliothèque de documents spécifique conforme à une convention de nommage particulière. L'API ne prévoit pas un changement de nom"()" méthode. Au lieu de cela, Nous utilisons "MoveTo(…)". Ici est un peu un minimum de code pour y parvenir:
public Substituez VOID ItemAdded(SPItemEventProperties propriétés) { SPFile f = propriétés.ListItem.File; f.MoveTo(propriétés.ListItem.ParentList.RootFolder.Url + « /xyzzy.doc"); f.Update(); } |
Le bit seulement délicat est les "Propriétés. ListItem.ParentList.RootFolder.Url". Le MoveTo() méthode requiert une URL. Que purée points chaîne me dans le dossier racine de ma bibliothèque de document actuel. Cela me permet d'éviter n'importe quel codage dur dans mon récepteur d'événements.
Il s'agit d'une version plus utile qui fait la même chose, mais affecte le nom du fichier à « Titre »:
public Substituez VOID ItemAdded(SPItemEventProperties propriétés) { DisableEventFiring(); // Attribuer le titre de ce point le nom du fichier lui-même. // NOTE: Cette cession doit avoir lieu avant que nous modifions le fichier lui-même. // Mise à jour de l'appel() sur le SPFile semble invalider les propriétés dans // certains sens. Mises à jour au titre de »" échoué jusqu'à ce que cela change (mise à jour et() appel) // ont été déplacés de la modification du nom de fichier. propriétés.ListItem[« Titre"] = propriétés.ListItem.File.Name; propriétés.ListItem.Update(); SPFile f = propriétés.ListItem.File; // Obtenir l'extension du fichier. Nous avons besoin que plus tard. chaîne spfileExt = Nouveau FileInfo(d.nom).Extension; // Renommez le fichier d'ID de l'élément de liste et utilisent l'extension de fichier pour garder // Cette partie intacte. f.MoveTo(propriétés.ListItem.ParentList.RootFolder.Url + "/" + propriétés.ListItem[« CARTE D'IDENTITÉ"] + spfileExt); // Commettre le déménagement. f.Update(); EnableEventFiring(); } |
Fellow, « Mark », a commencé une discussion de groupe de discussion potentiellement intéressants mettant l'accent sur le "établissement d'excellente gouvernance SharePoint depuis le début" pour un 35,000 environnement de l'utilisateur.
La discussion est ici: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6
Sur plus de pop et de contribuer!
</fin>
J'ai toujours l'habitude de mes fichiers XML de fonctionnalité d'artisanat à la main car il est tout à fait nouveau pour moi. Je ne veux pas compter sur un outil frontal ça fait que je ne comprends pas (Il a dit qu'il a écrit une entrée de blog à l'aide d'un outil, qu'il ne comprend pas).
Aujourd'hui, J'ai essayé d'ajouter une action personnalisée pour les paramètres de site, mais il ne serait pas juste apparaître. Je pourrais installer la fonctionnalité et le voir dans les fonctionnalités du site, mais quand j'ai activé il (sans erreur) il ne serait pas simplement apparaître dans le menu déroulant.
Enfin, j'ai réalisé que j'ai mal orthographié « SharePoint" dans l'attribut d'emplacement de la <CustomAction> nœud. C'est le fichier elements.xml mauvais:
<?XML Version="1.0" codage="UTF-8" ?> <Éléments xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolbar" GroupId="SiteActions" Emplacement="Microsoft.Sharepoint.StandardMenu" Séquence="100" Titre="Salut!" Description="Action de menu personnalisé ajoutée via une fonctionnalité." ImageUrl="_layouts/images/menuprofile.gif"> <UrlAction URL="http://www.xyzzy.com"/> </CustomAction> </Éléments> |
Bon:
<?XML Version="1.0" codage="UTF-8" ?> <Éléments xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolBar" GroupId="SiteActions" Emplacement="Microsoft.SharePoint.StandardMenu" Séquence="100" Titre="Salut!" Description="Action de menu personnalisé ajoutée via une fonctionnalité." > <UrlAction URL="http://www.xyzzy.com"/> </CustomAction> </Éléments> |
That one took me a good two hours to figure out 🙂
Je prends réconfort dans le fait qu'un jour à l'avenir, Je serai en mesure de dire avec conviction, "retour dans la journée, J'ai dû marcher trois milles vers le haut de la colline dans la neige (pieds nus!) afin de déployer une fonctionnalité personnalisée à MOSS. Vous les enfants, vous ne savez pas combien il est facile vous l'avez! Descendre de ma pelouse!"
Ne peut pas attendre.
</fin>