none
Criando Web Part RRS feed

  • Pergunta

  • a tarde,


    Estou estudando a criação de web part para a importação e utilização no Sharepoint Service 2.
    Para isso estou seguindo um tutorial existente no site Linha de Código conforme o link abaixo:

    http://www.linhadecodigo.com.br/artigos.asp?id_ac=457&pag=1

    Estou tentando iniciar com alguma coisa simples, de inicio queria só uma web part que pudesse exibir um Hello W....., mas não estou entendendo bem o funcionamento.

    Abri o Visual Studio 2005 e criei um novo projeto do tipo Web Control Library utilizando a liguagem VB.NET.

    Aberto o arquivo deixei da seguinte forma:

    Code Snippet

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Text
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Xml
    Imports System.Xml.Serialization
    Imports Microsoft.SharePoint.WebPartPages

    <DefaultProperty("Text"), ToolboxData("<{0}:WebPartWagner runat=server></{0}:WebPartWagner>")> _
    Public Class wagner
        Inherits WebPart

        Protected Sub ExibeHello()

            Write("Hello")

        End Sub

    End Class


    Feito isso, criei as configurações necessárias para que ao compilar o projeto ele fosse depositado no caminho , ou Build output path, esse caminho leva até a pasta BIN\1046 do Sharepoint.

    \\Svnova\web server extensions\60\BIN\1046\

    Compileio o projeto e criei um arquivo XML para que pudesse importar a WebPart para dentro do Sharepoint da seguinte forma:


    Code Snippet

    <?xml version="1.0"?>
    <WebPart xmls="http://schemas.microsoft.com/v2">
      <Assembly>WFJWP, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=</Assembly>
      <TypeName>WFJWP.wagner</TypeName>
      <Title>Teste Wagner</Title>
    </WebPart >



    Feito isso, fui até o sharepoint, criar pagina, adiconar Web Part, importa e localizei esse arquivo.
    Cliquei no botão carregar e ele carrega a web part, mas quando vou importar ele exibe a seguinte mensagem:

    Não é possível reconhecer o espaço para nome XML desta Web Part.

    Não sei o que pode ser, alguém poderia me ajudar?

    Alguém  teria algum exemplo de desenvolvimento de Web Part para que eu possa acompanhar?

    Obnrigado















    segunda-feira, 2 de julho de 2007 19:06

Todas as Respostas

  • Oi !

     

    Veja para a versão anterior : http://www.devaspnet.com.br/colunas/coluna0118.aspx , não creio que seja muito diferente do método usado na nova versão.

     

    []'s

     

    terça-feira, 3 de julho de 2007 00:32
  • Oi Dennes..

    Então, estou seguindo o seu tutorail...

    Mas tenho algumas dúvidas.
    por exemplo..

    Baixei o template, executei a extração dos arquivos e ele me deu a mensagem de que os arquivos haviam sido instalados de acordo, mas quando abro o visual Studio 2005 não é exibio o template...
    tem algum outro macete?

    Na criação da Web Part... Estou utilizando o Web Control Library...
    Estou desenvolvendo em minha maquina e fazendo referenceia a dll, Microsodt.Sharepoint.dll no servidor de produção, existe algum problema nisso?

    Criei uma pasta bin onde esta meu site e alterei o web.config existente na pasta do meu site conforme exibido abaixo:


    Code Snippet

    <SafeControls>
          <SafeControl Assembly="System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Namespace="System.Web.UI.WebControls" TypeName="*" Safe="True" />
          <SafeControl Assembly="System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Namespace="System.Web.UI.HtmlControls" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.WebPartPages" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.WebControls" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.ApplicationPages" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.SoapServer" TypeName="*" Safe="True" />
          <SafeControl Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.Meetings" TypeName="*" Safe="True" />
          <SafeControl Assembly="wagner, Version=1.0.0.0, Culture=Neutral" Namespace="wagner" TypeName="*" Safe="True"/>
       
        </SafeControls>



    Adicionei essa liha:

       <SafeControl Assembly="wagner, Version=1.0.0.0, Culture=Neutral" Namespace="wagner" TypeName="*" Safe="True"/>

    Tenho dúvida quanto a localizar o PublicKeyToken!
    Saberia me orientar em relação a isso? Onde eu verifico esse valor no meu Assembly?

    O Xml eu mesmo estou criando, estou colocando ele dentro da pasta bin que eu criei para deixar a o meu Assembly.

    Quando vou importa no sharepoint, eu seleciono esse arquivo, ele carrega o arquivo e exibe o titulo da web part, mas quando clico no botão importa ele exibe asseguinte mensagem:

    Um Controle de Formulário da Web ou de Web Part não pode ser exibido ou importado porque não está registrado neste site como seguro.

    O que pode estar errado?

    A Minha classe criada esta da seguinte forma:

    Code Snippet

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Text
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports Microsoft.SharePoint.WebPartPages

    <DefaultProperty("Text"), ToolboxData("<{0}:wagner runat=server></{0}:wagner>")> _
    Public Class nova
        Inherits WebPart

        Private Sub Imprimevalor()

            Write("Wagner")


        End Sub


    End Class















    quarta-feira, 4 de julho de 2007 15:11
  • Oi !

     

    O publicKeyToken é gerado por uma assinatura digital na DLL, que é feita com a ferramenta SN.

     

    Veja em http://msdn2.microsoft.com/en-us/library/k5b5tt23(vs.71).aspx

     

    []'s

     

    quinta-feira, 5 de julho de 2007 00:17
  • Legal
    Agora onde é que eu executo esse comando?

    quinta-feira, 5 de julho de 2007 13:06
  • Poxa deve existir alguma coisa errada ainda, continua dando aquele erro :

    Eu fiz tudo direitinho aparentemente agora...

    Meu Custon Control Library esta assim:

    Code Snippet

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Text
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Xml.Serialization
    Imports Microsoft.SharePoint.WebPartPages

    <DefaultProperty("Text"), ToolboxData("<{0}:WebParTeste runat=server></{0}:WebParTeste>")> _
    Public Class webparteste
        Inherits WebPart

        Dim Label As Label

        Protected Overrides Sub RenderWebPart(ByVal output As System.Web.UI.HtmlTextWriter)

            Label = New Label
            Label.Text = "Testando essa porcaria"
            Me.Controls.Add(Label)
            Label.RenderControl(output)

        End Sub

    End Class


    Copilei o projeto e gerei a DLL... blz

    Fui em "F:\Sites\diretório que foi criado meu site" e criei uma pasta bin, lá eu tenho duas Dll's o "Microsoft.SharePoint.dll " junto com um Xml do mesmo nome criado na hora que compileio o meu projeto  e a minha,  WebPartTeste.dll, junto com outros arquivos gerados no momento da compilação:

    webparteste.DWP
    WebPartTeste.PDB
    WebPartTeste.xml
    WebPartTeste.Resources.resources
    WebPartTeste.vbproj.GenerateResource.Cache

    O XMl que eu criei e depois modifiquei a extensao para .DWP é o seguinte:

    Code Snippet

    <?xml version="1.0" encoding="utf-8" ?>
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
      <Assembly>WebPartTeste</Assembly>
      <TypeName>WebPartTeste.webparteste</TypeName>
      <Title>WebParteste</Title>
      </WebPart>


    Fui até o diretório do meu site e abri o web.config ....
    adicionei a linha

      <SafeControl
            Assembly="WebPartTeste, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1dabd180483ef116"
            Namespace="WebPartTeste.webparteste"
            TypeName="*"
        Safe="True"
          />

    Além de adicionar , também fui em :
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\CONFIG

     Abri o web.config existente e adicionei o SafeControl  junto as demais SafeControls existentes.

    <SafeControl
            Assembly="WebPartTeste, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1dabd180483ef116"
            Namespace="WebPartTeste.webparteste"
            TypeName="*"
        Safe="True"
          />

    Mas,  aquela maldita mensagem continua aparecendo quando faço o procedimento de importar uma webpart...

    Um Controle de Formulário da Web ou de Web Part não pode ser exibido ou importado porque não está registrado neste site como seguro.









    quinta-feira, 5 de julho de 2007 15:15
  • Oi !

     

    Só para chutar : Tenta colocar o True, do safe, com T minusculo.

     

    []'s

     

     

    quinta-feira, 5 de julho de 2007 18:31
  • Não...
    Não era isso não

    Todos os safe estão como True com T Maiusculo...

    Modifiquei nos dois... web.config's

    Caraca que zica

    quinta-feira, 5 de julho de 2007 19:16