Arquivo da Categoría: Desenvolvemento SharePoint

Unha razón para "Un ou máis tipos de campo non están instalados correctamente”

Eu estaba facendo un pequeno puxão de onte a unha parte da web que fai unha consulta CAML cunha lista.  Fixen o cambio, implantado e foi atinxido cun erro:

Un erro inesperado ocorreu o día tres Outlook Previsión WebPart. Póñase en contacto co administrador do sistema. Un ou máis tipos de campo non están instalados correctamente. Ir á páxina de configuración da lista para eliminar eses campos.

Eu estaba enfrentando outro problema oddball máis cedo para non chamar inmediatamente miña consulta CAML o erro que o SharePoint estaba relatando para min.  Eu fixen unha procura rápida e Bing e atopei este post no blog útil por Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Aquí está a consulta malo:

query.Query = "<Onde><E><Neq><FieldRef Name = 'ABBR' /><Valor Type = 'A'>SFNY</Valor><FieldRef Name = 'ABBR' /><Valor Type = 'A'>Os IFC</Valor></Neq></E></Onde>";

Aquí está fixado:

query.Query = "<Onde><E><Neq><FieldRef Name = 'ABBR' /><Valor Type = 'A'>SFNY</Valor></Neq><Neq><FieldRef Name = 'ABBR' /><Valor Type = 'A'>Os IFC</Valor></Neq></E></Onde>";

Así, a moral da historia é: Asegúrese de que o CAML é correcto ou pode recibir un erro oddball.

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

</final>

SharePoint 2010 Resolución Prendido en "Implantando” Estado

Eu usei PowerShell para implantar unha solución para un Farm do SharePoint (h / t:  Corey Roth ea súa blog). 

Entón eu fun para a administración central, acceder Configuración do Sistema e prema en "Administrar solucións de farm" para implanta-lo para a facenda e para o meu (leve) desánimo, el ficou preso na "implantación".

Vin este problema vén se moitas veces nos foros do MSDN, entón eu estaba moi nervioso con iso.  Eu procurei un pouco e atopou este artigo útil (por unha persoa aparentemente sen asignación de http://www.resolutionsnet.co.uk/).  Eu cancelei o traballo de implantación e cando prema na solución, el me dixo que había implantado con éxito a solución para tres dos catro servidores de farm.

Eu fun para o servidor errante, parou o servizo de axustado dunha decena e reiniciouse.  Servidor Windows realmente me dixo que o servizo non puido responder ao mando, para que me di que estaba enfermo.

Este tempo, cando volvín para a administración central, Eu era capaz de implanta-lo sen ningún problema.

Esperemos que este pouco de información vai axudar algúns nunha conexión dos días.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Erro do Día: "Non se pode engadir o conxunto indicado para o GAC”

Veño loitando un pouco co Visual Studio 2010 nunha solución dun sp2010 e foi recibindo este erro:

Error occurred in deployment step ‘Add Solution’: Erro: Non se pode engadir o conxunto indicado para a caché global de assemblies: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Fun para o GAC-se (c:\windows assembly) para tratar de eliminar e ten un "arquivo en uso" erro.

Eu fixen un iisreset, Eu case baixo sysinternals, Parei o servizo de axustado dunha decena nos servizos ... finalmente, Eu só pechado e reaberto o visual studio en si e finalmente fun capaz de pecha-lo para fóra.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Fácil e rápida: Depuración VS 2010 Deployment solution

Visual Studio 2010 informes de difícil depurar erros durante a implantación algunhas veces.  Un xeito rápido e sinxelo de facer algunha depuración moi áspera é lanzar os seus propios excepcións nomeados.  Visual Studio pode amosar-lles na consola de saída.

Considero este fragmento de código:

image

Se este recurso é delimitado para unha aplicación web, sitio vai ser nulo.  Se tentar facer referencia a unha propiedade da web, obter o erro ambiguo:

Error occurred in deployment step ‘Add Solution’: Referencia de obxecto non está definida para unha instancia dun obxecto.

Con todo, se lanzar unha nova excepción e pasar unha cadea para o constructor, vostede recibe unha mensaxe un pouco máis útil:

image

É unha técnica bruto, pero moi rápido e fácil.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Traballo de Timer FeatureActivated E feature Scope

Eu estou traballando cun código que alguén entregado a min para un traballo de axustado dunha decena.  Non había solicitado o código de activación real función que tiña que gravala-lo, por suposto.  Aproveitei Pos Andrew Connell blog famoso sobre o tema.

Está a usar o Visual Studio 2010 and deployment kept failing with an error “Error occurred in deployment step ‘Add Solution’: Referencia de obxecto non está definida para unha instancia dun obxecto. "

Eu estaba tomando o seu código moi literalmente.  Eu estaba alcance o recurso ao nivel da aplicación web, como se mostra:

image

Como resultado, as propiedades que son enviados para o receptor son da aplicación web, non un conxunto de sitios.  A finais, o código está así:

public override void FeatureActivated(Propiedades SPFeatureReceiverProperties)
{

    // Non facer o seguinte con recursos da web app ámbito, que leva á desesperación sorriso
    // Local SPSite = properties.Feature.Parent como SPSite;

    SPWebApplication wa properties.Feature.Parent = como SPWebApplication;

    se (wa == null) throw new Exception("Webapp2 é nulo.");

    foreach (Traballo SPJobDefinition T: Microsoft.SharePoint.Administration.SPJobDefinition en wa.JobDefinitions)
    {

        intentar
        {
            se (job.Name == List_JOB_NAME)

                job.Delete();
        }
        incorporarse (Exception e)
        {
            throw new Exception("Marcador de 2");
        } // incorporarse e excepción
    }

    // instala o traballo

    WeatherForecastTimerJob weatherForecastTimerJob =
        novo WeatherForecastTimerJob(List_JOB_NAME, wa);

    SPMinuteSchedule axenda = SPMinuteSchedule novo();
    schedule.BeginSecond = 0;
    schedule.EndSecond = 59;
    schedule.Interval = 5;
    weatherForecastTimerJob.Schedule horario =;
    weatherForecastTimerJob.Update();

}

A clave take-away é que cando o recurso é delimitado para unha aplicación web, os SPFeatureReceiverProperties que o SharePoint pasa para o seu receptor recurso ten parámetros nivel de web app.  Entrada de André antigo blog asume que é o ámbito do conxunto de sitios web.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Onde está Microsoft.SharePoint.ApplicationPages.Administration.dll?

Me foi entregado un proxecto do Visual Studio que Microsoft.SharePoint.ApplicationPages.Administration.dll referencias.  Demorei un pouco para atopalo e eu pensei en compartir.  No meu ambiente, Está situado no:

c:\arquivos de programas ficheiros comúns Microsoft Shared web server extensions 14 config adminbin

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

CodePlex Proxecto – SP2010 Explorador

Como parte dun esforzo en curso para aprender os detalles técnicos de baixo nivel de SharePoint 2010, Eu creei un "SharePoint Explorador"Tipo de ferramenta.  A idea non é nova.  Eu usei este proxecto máis dunha vez: http://sharepointexplorer.codeplex.com/.  A miña idea é crear unha versión do SharePoint que usa partes web conectados para amosar todos os detalles de baixo nivel que o modelo de obxecto pode proporcionar. 

Este blog serve como un anuncio do proxecto, así como un chamamento a voluntarios.  Se estás interesado en traballar neste proxecto, aviso-me por correo electrónico (galvin.paul @ gmail.com) e nós imos traballar con iso.

Aquí está o proxecto: http://sp2010explorer.codeplex.com/

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Traballando con TreeNodeBinding no control TreeView ASP.NET

Eu estiven a traballar no que eu espero que sexa a editado en breve CodePlex proxecto que ofrece un pouco agradable integrado de pezas web falar uns cos outros a través de conexións do provedor / consumidor coa finalidade de explotar un sitio SharePoint debaixo das cubertas.  (Este foi certamente facer antes, pero este é un proxecto de aprendizaxe, tanto como calquera outra cousa).  Este pretende ser un substituto para Windows Explorer vista do SharePoint 2010 bibliotecas de documentos.

O código ten a chamada recursiva habitual debaixo da SPWeb de e SPLists partir dun determinado punto de partida.  O obxecto que fai todo isto travesía constrúe unha cadea XML que é algo así:

<sitecollection url =’http://demo2010a:9090′>
 
<tea
     title = 'Ola Mundo Sandbox' 
     Template = 'O lugar para os equipos para organizar rapidamente, autor, e compartir información, Bla bla bla '>

     <lista
        title = 'BCC_Health_Services_FAQs’
        Template = 'CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[acción]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</lista>

     <lista
        title = 'BCC_Notifications' 
        Template = 'CustomList' 
        ListId =’
http://demo2010a:9090/helloworldsandbox[acción]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
     </lista>

  </tea>

</sitecollection>

Espero que limpar XML ante todo está dito e feito.

Quero chegar, finalmente, que a información anterior e nun control TreeView.  Non é exactamente a terra tremer cousas.

O reto que asumir aquí era para chamar a visualización de árbore para un control de fonte de datos XML en vez de construír manualmente os meus TreeNodes como percorrer a árbore.  Eu fixen iso en parte porque estou deliberadamente facer as cousas máis difíciles en min (este é un proxecto de aprendizaxe despois de todo) e en parte porque eu teño esa vaga noción de que a construción de nós de árbore que percorrer a árbore non é unha boa idea a longo prazo.

O problema con esta visión é que o control Treeview non sabe sobre os bos atributos en nós interesantes como "lista" ou "web" para que mostre esa saída por defecto:

 

image

Isto non é útil.  Este é o lugar onde a clase TreeNodeBinding axuda.  Podo usar isto para dicir o control Treeview como debe interpretar o XML.  Aquí está un exemplo:

TNB = new TreeNodeBinding();
tnb.DataMember = "list"; // Esta é a etiqueta en XML para un sitio.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";

Esta conexión di o treeview que cando se atopa unha <lista> nó no XML, aplicaranse as conexións para TargetField, ValueField e ToolTipField.  En maio de aplicación, estes mapa do seguinte xeito:

  • TargetField: Cando alguén fai clic nun valor do nodo, iso é o que vai ter para SelectedNode.Value.  Isto non debe ser confundido co ...
  • ValueField: Isto é o que quere que o Treeview para mostrar ao usuario.
  • ToolTipField: O valor do XML que quere como unha información de ferramenta.

Engadir que TreeNodeBinding para DataBindings da exhibición de árbore e terá unha saída como esta:

 

image

Vou ter máis en todo isto como eu continuar no proxecto e, finalmente, poñer isto en Codeplex.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Entra Filtros campo de texto para o seu sitio Part personalizada

Eu quería recibir información dun filtro de campo de texto no SharePoint 2010 na miña parte da web personalizado.  Intento usar este artigo MSDN como base, pero o artigo é ou dobres ou non estou só seguindo correctamente.

Un pouco máis en busca apareceu Mike Smith MSDN contribución aquí (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Hai unha morea de cousas alí fóra web Parts conectáveis ​​pero o artigo de Mike é tan sinxelo que el gañou.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Fácil e rápida: Enviar correo-e usando Gmail SMTP Server in. Net C #

Este non é exactamente un novo tema, pero cando eu precisaba facer iso, I found a lot of “why won’t this work for me” and not too many direct answers. I hope someone finds this useful.

O seguinte fragmento de código pode enviar un correo-e usando a miña conta de Gmail para facelo, incluíndo anexos:

utilización System.Net.Mail;
utilización System.Net;

NetworkCredential loginInfo = novo NetworkCredential("[O meu ID Gmail]", "[O meu contrasinal de Gmail]");
MailMessage msg = novo MailMessage();
msg.From = novo MailAddress("[M Gmail Id]@ Gmail.com");
msg.To.Add(novo MailAddress("paul.galvin@arcovis.com"));
msg.Subject = "Test infopath dev subject";
msg.Body = "<html><corpo><forte>Unha mensaxe forte.</forte></corpo></html>";
msg.IsBodyHtml = certo;

foreach (corda aguçar en NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(novo Accesorios(aguçar));
} // Engadido anexos.

SmtpClient client = novo SmtpClient("smtp.gmail.com");
client.EnableSsl = certo;
client.UseDefaultCredentials = teito;
client.Credentials = loginInfo;
client.Port = 587;
client.EnableSsl = certo;
client.Send(mensaxe);

Algúns bits clave que retardou-me para abaixo e outras observacións / notas:

  • A primeira liña que crea o obxecto loginInfo que usar o seu ID de Gmail desposuído de "@ Gmail.com". Así, o meu enderezo de correo-e de Gmail e "Sharepoint@gmail.com"E a miña contrasinal" xyzzy ", entón a liña quedaría así:

NetworkCredential loginInfo = novo NetworkCredential("sharepoint", "Xyzzy");

  • A miña conta de Gmail está configurado para usar SSL e que non era un problema.
  • There is some conflicting information out there on what port to use. I used port 587 e el funcionou ben para min.
  • No meu caso, I also needed to send attachments. That NIPFD object has a method that knows where my attachments are. It’s returning a fully path (e.g. "C:\temp\attachment1.jpg”. In my test, Eu tiña dous anexos e ambos funcionaron ben.

Eu usei o Visual Studio 2008 para escribir este código.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Technorati Tags: ,,,