El elemento web implementado no se muestra en 'Galería de elementos web: Nuevos elementos web'

StackOverflow https://stackoverflow.com/questions/208333

  •  03-07-2019
  •  | 
  •  

Pregunta

Tomé un archivo wsp e hice mi stsadm -o addolution como de costumbre. Luego entré en administración central - > gestión de soluciones y apareció muy bien. Luego implementé el elemento web, sin problemas hasta ahora.

El problema es cuando voy a agregarlo a la galería de elementos web ( Galería de elementos web: Nuevos elementos web ). Normalmente, el elemento web está en la lista. Marque la casilla junto a él y hago clic en rellenar galería pero no aparece en la lista? ¿Podría faltar algo en mi manifest.xml para causar esto? Acabo de escribir y desplegar otra parte web de la misma manera exacta y me fue bien. Además, escribí un elemento web ficticio que no hace más que imprimir " trabajando " Y lo probé con eso obteniendo los mismos resultados.

¿Alguna idea?

¿Fue útil?

Solución

wow ... ¡resulta que todo lo que faltaba era una declaración "pública" en mi clase!?!

Me siento como un idiota. Pero también tuve que eliminarlo manualmente para que se reconociera. ¡Gracias a todos!

Otros consejos

Verifique que el archivo .webpart se haya implementado en la carpeta wpcatalog de su sitio web. Dependiendo de qué directorio se especificó al aprovisionar la aplicación web, debería encontrarlo en una ubicación similar a esta:

c: \ Inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 \ wpcatalog

He tenido el mismo problema con un elemento web en el que he estado trabajando, pero en mi caso simplemente olvidé agregar un elemento web a " Elementos en el cuadro Feature " . Para hacer esto:

  1. En Explorador de soluciones despliega el subárbol de tu característica.
  2. Haga doble clic en el elemento que termina con .feature .
  3. Debería ver una nueva pestaña con el título, la descripción y el alcance de la característica. Debajo de ellos hay dos cajas con botones en medio. En el cuadro de la izquierda, seleccione su elemento web y presione el botón > (marcado en la imagen) para agregarlo a la función.

NOTA: También puedes hacer esto presionando el botón Manifest en la parte inferior y editando el archivo Manifest manualmente, si sabes lo que estás haciendo.

Agregar elemento web a la función

Esto realmente puede ayudar a otros arrancadores de SharePoint.

En algún momento tuve el mismo comportamiento. Finalmente escribimos una herramienta cmd, que ejecuta " stsadm -o addolution " y luego agregar a la galería de elementos web todos los archivos xml para elementos web.

Hay una fuente (poco editada):

string cmd_StsAdm = @"C:\Program files\Common files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe";
string url_Site = "http://localhost";
string url_Web = "http://localhost";
if ( string.IsNullOrEmpty( url_Web ) ) { url_Web = url_Web; }

Console.WriteLine( "Deleting sharepoint solution" );
string args_DeleteSolution = string.Format( "-o deletesolution -name \"{0}\" -override", startInfo.fileNameWsp );
ShellWait( cmd_StsAdm, args_DeleteSolution );

string filePathWsp = "**** path to wsp file ****";
Console.WriteLine( "Adding sharepoint solution" );
string args_AddSolution = string.Format( "-o addsolution -filename \"{0}\"", filePathWsp );
ShellWait( cmd_StsAdm, args_AddSolution );

Console.WriteLine( "Deploy sharepoint solution" );
string args_DeploySolution = "-o deploysolution -name \"{0}\" -local -allowGacDeployment -url \"{1}\" -force";
args_DeploySolution = string.Format( args_DeploySolution, startInfo.fileNameWsp, url_Web );
ShellWait( cmd_StsAdm, args_DeploySolution );

int counter = 0;
foreach ( CWebPartVytvoreniInfo wpRslt in solutionInfo.WebParts ) {
    counter++;
    string msg = string.Format( "Aktivace web part {0} - {1} z {2}", wpRslt.Info.Nazev, counter, solutionInfo.WebParts.Count );
    Console.WriteLine( msg );
    string args_ActivateFeature = "-o activatefeature -id {0} -url {1}";
    args_ActivateFeature = string.Format( args_ActivateFeature, wpRslt.Info.ID, url_Site );
    ShellWait( cmd_StsAdm, args_ActivateFeature );
}

Console.WriteLine( "Connecting to sharepoint site" );
using ( Microsoft.SharePoint.SPSite site = new Microsoft.SharePoint.SPSite( url_Site ) ) {
    Microsoft.SharePoint.SPList ctg_WebParts = site.GetCatalog( Microsoft.SharePoint.SPListTemplateType.WebPartCatalog );

    counter = 0;
    foreach ( WebPartInfo wpInfo in solutionInfo.WebParts ) {
        counter++;
        string dirPath = System.IO.Path.Combine( wpInfo.DirectoryPath );
        string fileName = wpRslt.Info.Nazev + ".webpart";
        string filePath = System.IO.Path.Combine( dirPath, fileName );

        string msg = string.Format( "Uploading file '{0}' - {1} z {2}", fileName, counter, solutionInfo.WebParts.Count );
        Console.WriteLine( msg );
        using ( System.IO.FileStream fstrm = OtevritSoubor( filePath ) ) {
            ctg_WebParts.RootFolder.Files.Add( fileName, fstrm, true );
        }
    }
}

Descubrí que si implemento un elemento web que estaba roto anteriormente, tuve que eliminarlo manualmente después de eliminar la solución, antes de volver a agregar la solución

Target .NET Framework fue el problema para mí. Me dirigí a .NET 3.5 y eso no funcionó para mí. Así que apunté a .NET 3.0 en su lugar, y funcionó bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top