arquivos Mensais: Janeiro 2008

É por isso que eu não como usar ferramentas de dia Zero

http://groups.google.com/group/microsoft.public.sharepoint.portalserver.development/browse_thread/thread/41e8cbe4f15e8b4c/76506ea401403e35?#76506ea401403e35

Se a ferramenta está fazendo coisas que você não entende, e depois falhar no passo n de um número desconhecido de passos, Você está morto na água…

</fim>

Solução para falha de importação de BDC ADF: “Ocorreu o seguinte erro:”

Foi mais uma vez criando arquivos ADF BDC à mão (para que eu possa construir minha "Saia meu gramado!" cred) e acertar esse erro lindo:

imagem

"Importação de definição de aplicativo falha. Ocorreu o seguinte erro:"

Como você pode ver, há um erro, mas … não vai me dizer o que é.

No meu caso, a questão acabou por que eu tinha começou com um ADF funcional para um projeto diferente que conectado a um banco de dados e executada uma consulta SQL contra um modo de exibição. Neste novo projeto, Eu estou chamando um método em um serviço da web. Eu tinha despojado o material específico do DB e acrescentou minhas coisas de serviço web, mas não conseguiu actualizar o <LobSystem>do tipo atributo. Eu mudei isso para "WebService" e eu Felizmente passei para erros de importação mais recente e mais emocionante, que foram manipulados em breve.

Aqui está o LobSystem errado:

<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "banco de dados"
Versão = "1.0.0.0" Nome = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Isso é correto:

<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "WebService"
Versão = "1.0.0.0" Nome = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

</fim>

Technorati Tags:

BDC parece um substituto viável para pesquisas

ATUALIZAÇÃO: Esta postagem MSDN tem algumas observações interessantes de JXJ com base em seu, principalmente negativas, experiências indo por este caminho: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Temos um cenário de negócios onde precisamos ligar duas bibliotecas de documentos por meio de um comum "ID do documento" campo.

Muitas vezes usamos uma coluna de pesquisa que implementa ligações assim. Existem várias desvantagens para colunas de pesquisa, três dos quais são:

  1. Apenas uma coluna da biblioteca de pesquisa de pesquisa pode ser vinculada.
  2. Desempenho: A biblioteca de fonte pode conter centenas de entradas. Isso é demais entradas no lookup.
  3. Pesquisa: Não há nenhuma pesquisa integrada. Não digo no sentido da busca MOSS, mas não há nenhuma maneira para pesquisar / Filtrar em várias colunas da biblioteca de documentos fonte e localize o link desejado.

Respaldo da BDC, podemos usar um "dados de negócios" tipo de coluna fornece uma pesquisa superior e ainda permite que várias colunas de dados para aparecer em modos de exibição lista.

Eu tive algum sucesso com essa abordagem preliminar e planeja escrever mais sobre isso.

Se você trabalhou este ângulo antes e tiver quaisquer comentários, por favor, compartilhe!

</fim>

Technorati Tags:

Solução para erro de importação BDC: “Não foi possível carregar o tipo descrito pelo TypeName de TypeDescriptor …”

Eu tenho trabalhado com BDC hoje, codificação de arquivos ADF com a mão e eu mesmo gerar alguns erros. Um tal erro:

Importação de definição de aplicativo falhada. Ocorreu o seguinte erro: Não foi possível carregar o tipo descrito pelo TypeName de TypeDescriptor. Nome do parâmetro: typeName erro ocorreu em ou antes de linha: 35’ e a posição: '20'.

MOSS exibido este erro ao tentar importar o arquivo XML do ADF.

Eu pesquisei a internete e encontrei que eu estava referenciando o nome de instância LOB (do <LobSystemInstance>) no meu <TypeDescriptor> nó quando eu deveria ter referenciado o próprio nome LOB (De <LobSystem>).

Errado:

<TypeDescriptor TypeName="Conchango.KeyValue, Nome da instância do LOB" Nome = "KeyValue">

Corrigir:

<TypeDescriptor TypeName="Conchango.KeyValue, Nome de LOB" Nome = "KeyValue">

Espero que este alguém salva uma ou duas horas do tempo.

</fim>

Subscreva ao meu blog!

Technorati Tags:

Solução para problema: “FileNotFoundException” Com o meu receptor de recurso.

Eu estava trabalhando em um recurso na semana passada que gostaria de acrescentar alguns receptores de evento para uma instância de lista específica. (Eu blogged um pouco sobre esse receptor de lista aqui).

Usando a linha de comando, Eu poderia instalar o recurso sem erros (mas veja abaixo o erro oculto). Quando eu tentei implantar o recurso no site, MOSS queixou-se de um "FileNotFoundException" erro. Esta entrada de blog descreve como eu resolvi isso.

Este é o erro que MOSS mostrou-me no navegador da web:

Recurso ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ não pôde ser instalado porque o carregamento de assembly de receptor de eventos "xyzzyFeatureReceiver_0" Falha: System.IO.FileNotFoundException: Não foi possível carregar arquivo ou assembly ' xyzzyFeatureReceiver_0’ ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.
Nome do arquivo: ' xyzzyFeatureReceiver_0’
em System.Reflection.Assembly.nLoad(Nome de arquivo de AssemblyName, Base de código de seqüência de caracteres, Evidência assemblySecurity, Montagem locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
em System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidência assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
em System.Reflection.Assembly.InternalLoad(AssemblyString de Cadeia de caracteres, Evidência assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
no Load(AssemblyString de Cadeia de caracteres)
em Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
AVI: Log de vinculação conjunto está activado OFF.
Para habilitar o log de falha bind assembly, Defina o valor do registro [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) Para 1.
Observação: Há alguma penalidade de desempenho associada assembly vincular falha log.
Para desativar esse recurso, Remova o valor do registro [HKLMSoftwareMicrosoftFusion!EnableLog].

Solucionar problemas com o Windows SharePoint Services.

Eu sei como deliberadamente causar esse erro: Não instalar o assembly no GAC. Mas, foi no GAC. Eu normalmente instalar assemblies no GAC arrastando-os para o c:\WINDOWSassembly. pasta usando o windows explorer. Eu nunca senti 100% confortável fazendo isso porque eu sempre pensei que gacutil existiu por uma razão … Então, eu tentei isso. Isso não fez diferença.

Eu procurei a internete e encontrei este post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

O cartaz aconteceu estar usando o mesmo bit de raiz do código (do livro WSS dentro desta lista) Então isso foi um sinal de esperança. No entanto, a sugestão de decorar o assembly com um [montagem: ] directiva não fazia sentido para mim. Eu tentei de qualquer maneira e eu estava certo. Isso não fez diferença.

Então eu notei que a minha definição de classe não era pública. Eu fiz isso público e que não fez diferença.

Próximo, Eu fui para o problema de habilitar o log de falha de ligação, montagem"" (seguindo as instruções úteis e precisas fornecidas) e isto é onde as coisas começaram a ficar interessante. Esse log mostra-me que o tempo de execução está procurando em todo lugar nesse servidor para minha montagem. Nem parece ser procurá-lo no meu armário de remédios. Mas … Ele não vai procurá-lo no GAC.

Coloquei meu casaco de inverno e ir procurar a Internet novamente e achar que alguém teve este problema também. A longa discussão em que a publicação peters fora em nada e não consigo encontrar uma solução.

Mudar meu assembly para um dos lugares que o log afirma está procurando e eu avançar um pouco mais. Eu sou recompensado com um novo erro no navegador quando tento ativar o recurso:

Falha ao criar objeto receptor de recursos do assembly "xyzzyFeatureReceiver_0", Digite "Conchango.xyzzyFeatureReceiver" para o recurso b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: Sistema. ArgumentNullException: Valor não pode ser nulo.
Nome do parâmetro: tipo
em System.Activator.CreateInstance(Tipo tipo, Boolean confidenciais)
em System.Activator.CreateInstance(Tipo tipo)
em Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Solucionar problemas com o Windows SharePoint Services.

Tempo para uma última viagem à Internets!

Desta vez eu descobrir, previsibilidade suficiente, que MOSS emite este erro porque o assembly não está no GAC.

Quero comprar obter algo positivo fora deste e tentar sentir um pouco orgulhoso que eu criei o Fugitivo de assemblies MSIL, Mas não está funcionando. Estou muito chateado. Me pego resmungando "ovo ou a galinha" sob a minha respiração.

Eu finalmente decidir chutar. Criar um projeto totalmente novo e copiar/colar o código do projeto de não-trabalho de incredible-cloaked-from-the-GAC-assembly sobre a este novo projecto. (Eu procuro um sinalizador de compilação chamado algo como "hide from assembly ligação se instalado no GAC" mas não é possível encontrar um).

Posso instalar o recurso e ativá-lo e … Ele funciona! Assim, Depois de tudo isso, Eu tive que basicamente ' reiniciar’ meu projeto. Esta é outra razão por que eu odeio computadores.

Aprendi uma coisa útil disso. Eu tinha sido instalando recursos usando linha de comando stsadm dia inteiro e usando o "-força" opção por hábito. Por alguma razão, Eu não uso o - opção de força quando eu instalei o novo projeto. Desta vez, Eu fiz realmente, verdadeiramente esquecer copiar assembly deste novo projeto no GAC. Como resultado, Recebi esse "FielNotFoundException" erro. Desta vez, I got it from stsadm, Não, quando eu tentei ativar o recurso através do web browser. Assim, -força, na verdade, interpreta dois papéis. Ele permite que você re-instalar um recurso existente. Ele também permite que você instale uma buggy característica que não pode trabalhar em tempo de execução, suprimindo o erro. Provavelmente diz tanto na ajuda em algum lugar, mas eu nunca notei isso.

</fim>

Domingo engraçados: Início 10 Maneiras de irritar sua esposa

  1. Comprar brócolis quando você sabe que já há mais do que suficiente na geladeira.
  2. Vamos correr. Refresque-se. Tire a fronha limpa e substituir com t-shirt. Cobrir com fronha limpa.
  3. Ao dirigir, perguntar se devemos ir a maneira errada abaixo uma rua de mão única.
  4. Para 15 anos, todos os Domingos que esposa você sugere ir a um Museu, expressar surpresa que museus estão abertas no domingo.
  5. Para 15 anos, ocasionalmente, sugiro ir à livraria local no domingo. Expressar surpresa que eles não estão abertos no domingo (Muito obrigado Leis de azul!).
  6. Utilização 20 pontos para fazer uma 3 ponto de virada.
  7. Em um fresco tarde de outono cedo, entra na sala e ligar o ar condicionado. Queixam-se de que está frio. Quando a mulher diz, "por que você ligue que, Bobo" e se levanta para desligá-lo, Pegue o local quente que ela tinha no sofá. Pontos de bônus se ela não percebe fizeram até muito mais tarde.
  8. Abrir uma lata de atum voador branco delicioso e comê-lo diretamente da lata, na cama, À noite.
  9. Ir para a cozinha enquanto esposa é comer o jantar, abrir a gaveta de talheres e empurrar utensílios ao redor até gritos de mulher, "o que você está procurando!"
  10. Após a recepção de novos cartões de visita, secretamente colocá-los todos ao redor da casa: Debaixo da cama, em casos de travesseiro, dentro de xícaras de café, em sua bolsa, em bolsos de casaco, carro luva compartimentos, a despensa — Você pode pensar em qualquer lugar.
  11. Gravar entradas de blog sobre sua esposa.
  12. Acordar.
  13. Ao caminhar pelas ruas de Nova York, estar em alerta para "crusty" objetos no chão. Tendo em mente medos especial da esposa, alcançar para baixo para escolher um acima acima e pedir, "hmm, Gostaria de saber o que é?" (Esteja preparado para esposa de corpo você bater como se ela é uma agente do serviço secreto protegendo o presidente de um franco-atirador, ou você vai encontrar-se deitado de costas na calçada).
  14. Unidade duas vezes em torno de um parque de estacionamento à procura de espaço. Você sabe que você realmente ganhou grana quando grita seu filho no banco de trás, "Oh não! Ele está fazendo isso mais uma vez!"
  15. Escrever "top 10" listas que não tem 10 itens.

===

Piada de esposa de bônus:

Dois colegas de trabalho masculinas sair para almoçar. Um deles diz para o outro, "Eu solta um embaraçoso Freudiano slip na outra noite."

"Um lapso Freudiano? O que é aquilo?"

"Bem, Quando nós terminamos comendo, a garçonete veio e perguntou como nós gostamos nossas refeições. Eu quis dizer, ' Eu amei o peito de frango’ Mas em vez disso, eu disse 'Eu amei seus seios'. Eu fiquei tão envergonhada."

"Ah," seu colega de trabalho respondeu:. "Eu tinha a mesma coisa aconteceu neste fim de semana com minha esposa. Estávamos comendo café da manhã, que eu queria perguntar-lhe para passar a manteiga, mas em vez disso eu gritei para ela, ' Você arruinou a minha vida!’"

</fim>

Technorati Tags:

ID do evento 1023: “O Windows não pode carregar MSSCNTRS de DLL de contador extensível”

ATUALIZAÇÃO (04/08/08): Parece ter resolvido esse problema. Na linha de comando, Eu corri "c:\windowssystem32lodctr /R" como por uma entrada falando sobre InstallShield problemas e que parece ter resolvido-lo para mim.

Tenho notado que ultimamente, meu fã de desktop/servidor nunca desliga. Eu sei que costumava desligar. Eu levei um momento para verificar para fora notado que a um processo de VMware estava correndo um consistente 20% utilização em um da CPU. Eu verifiquei o log de eventos e vi esses erros no log do aplicativo acontece dezenas de vezes por minuto:

O Windows não pode carregar o UGatherer de DLL de contador extensível, a primeira DWORD na secção de dados é o código de erro do Windows.

O Windows não pode carregar o UGTHRSVC de DLL de contador extensível, a primeira DWORD na secção de dados é o código de erro do Windows.

O Windows não pode carregar MSSCNTRS de DLL de contador extensível, a primeira DWORD na secção de dados é o código de erro do Windows.

Se me aprofundar nos detalhes de uma dessas mensagens, Eu começ este:

Fonte: Perflib

Tipo: Erro

Categoria: Nenhum

ID do evento 1023

Fiz algumas pesquisas e havia alguma indicação de que poderia ser um problema de permissão em termos de acesso às DLLs em questão. Eu brinquei com essas coisas, mas não pode afetar as coisas de uma forma positiva, então desisti do que.

VMware tinha me atormentando sobre como executar uma atualização há muito tempo, assim que eu anotou para baixo a versão que eu tinha instalado (aparentemente "1.0.1 construir 29996") e fiz a atualização. Isto me atualizado para v 1.04. Infelizmente, Ele não corrigiu o problema.

Eu posso parar o número insano de mensagens vai meu log de aplicativo se eu desligar um serviço chamado "VMware Authorization Service". Isto me impede de usar o software VMware, Portanto, … Não uma ótima opção.

O sistema operacional é Windows XP 64 bit.

Eu não acho que isso sempre aconteceu, mas não me lembro de qualquer evento específico que poderia ter conduzido a ele.

Eis porque eu odeio computadores.

</fim>

Technorati Tags:

Rápido & Fácil: Renomear arquivo carregado usando o modelo de objeto SharePoint através de um receptor de eventos

ATUALIZAÇÃO: Isso funciona, mas existem limitações significativas, que são descritas nos comentários. Isto ainda pode ser útil em algumas circunstâncias.

ATUALIZAÇÃO 2: No meu projeto atual, os usuários sempre fazer upload de documentos. Como resultado, Eu não corro em um problema onde o MS Word está sendo executado e acha que o arquivo foi renomeado nele. Eu funcionei em um problema, "o arquivo foi modificado por outro usuário" e isto resolvido através de um sinalizador de tipo semáforo simples. Os usuários precisam mudar um campo de dados de meta de seu valor padrão para outra coisa. O itemupdated() receptor procura lá um valor válido antes de realmente executar a renomeação e desde então, Eu não tive quaisquer problemas. Sua milhagem pode variar.

Eu tenho uma exigência do cliente para alterar o nome de arquivos carregados para uma biblioteca de documentos específica conformar-se com uma Convenção de nomenclatura específica. A API não oferece uma "renomear()" Método. Em vez disso, Nós usamos "MoveTo(…)". Aqui está um pouco mínimo de código para realizar essa tarefa:

 público substituir privatevoid ItemAdded(SPItemEventProperties Propriedades)
        {
            SPFile t: Microsoft.SharePoint.SPFile f = Propriedades.ListItem.File;

            f.MoveTo(Propriedades.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

O bit apenas complicado é as "Propriedades. ListItem.ParentList.RootFolder.Url". O MoveTo() método requer uma URL. Que mínimo pontos de seqüência de caracteres para a pasta raiz de minha biblioteca do documento atual. Isso me permite evitar qualquer codificação difícil no meu receptor de eventos.

Esta é uma versão mais útil que faz a mesma coisa, mas atribui o nome do arquivo para "Título":

 público substituir privatevoid ItemAdded(SPItemEventProperties Propriedades)
        {
            DisableEventFiring();

            // Atribuir o título deste item para o nome do próprio arquivo.
 // OBSERVAÇÃO: Esta atribuição deve ter lugar antes de nós modificar o próprio arquivo.
 // Atualização de chamada() sobre o SPFile t: Microsoft.SharePoint.SPFile parece invalidar as propriedades em
 // algum sentido.  Atualizações para "título" falha até que altere (e atualização() chamar)
 // passaram em frente da mudança para o nome do arquivo.
            Propriedades.ListItem["Título"] = Propriedades.ListItem.File.Name;

            Propriedades.ListItem.Update();

            SPFile t: Microsoft.SharePoint.SPFile f = Propriedades.ListItem.File;

            // Obter a extensão do arquivo.  Precisamos que mais tarde.
 Cadeia de caracteres spfileExt = Novo FileInfo(f.Name).Extensão;

            // Renomeie o arquivo para ID do item de lista e use a extensão de arquivo para manter
 // parte dele intacta.
            f.MoveTo(Propriedades.ListItem.ParentList.RootFolder.Url +
                "/" + Propriedades.ListItem["ID"] + spfileExt);

            // Confirmar a mudança.
            f.Update();

            EnableEventFiring();
        }

Fórum de discussão: Impor a conformidade com as práticas recomendadas em ambiente não-Trivial de musgo

Um companheiro, "Mark", foi iniciado um debate de newsgroup potencialmente interessante enfocando "estabelecendo excelente Governança SharePoint desde o início" para um 35,000 ambiente do usuário.

A discussão é aqui: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6

Pop em sobre e contribuir!

</fim>

URL de ação personalizada não será exibida para o novo recurso

Ainda tenho o hábito de crafting meus arquivos XML do recurso à mão, já que é tudo muito novo para mim. Não quero contar com uma ferramenta front-end que faz coisas que não entendo (Ele disse que como ele escreveu uma entrada de blog usando uma ferramenta que ele não entende).

Hoje, Estava a tentar adicionar uma ação personalizada para as configurações do site, mas ele não apareceria. Eu poderia instalar o recurso e veja os recursos do site, mas quando eu ativei- (sem erro) Ele simplesmente não iria aparecer no menu Soltar-para baixo.

Finalmente percebi que eu misspelled "SharePoint" no atributo Location do <CustomAction> nó. Este é o arquivo elements. XML mal:

<?XML Versão="1.0" codificação="UTF-8" ?>
<Elementos xmlns="http://schemas.Microsoft.com/SharePoint/">
  <CustomAction
 Identificação="SiteActionsToolbar"
 GroupId="SiteActions"
 Localização="Microsoft.SharePoint.StandardMenu"
 Seqüência="100"
 Título="Olá!"
 Descrição="Ação do menu personalizado adicionada por meio de um recurso."
 ImageUrl="_layouts/images/menuprofile.gif">

    <UrlAction URL="http://www.xyzzy.com"/>

  </CustomAction>
</Elementos>

Bom:

<?XML Versão="1.0" codificação="UTF-8" ?>
<Elementos xmlns="http://schemas.Microsoft.com/SharePoint/">
  <CustomAction
 Identificação="SiteActionsToolBar"
 GroupId="SiteActions"
 Localização="Microsoft.SharePoint.StandardMenu"
 Seqüência="100"
 Título="Olá!"
 Descrição="Ação do menu personalizado adicionada por meio de um recurso."
    >
    <UrlAction URL="http://www.xyzzy.com"/>
  </CustomAction>
</Elementos>

That one took me a good two hours to figure out 🙂

Eu tomo consolo no fato de que algum dia no futuro, Eu vou ser capaz de afirmar com convicção, "back in the day, Eu tinha que caminhar quilômetros até Morro na neve (descalço!) a fim de implantar um recurso personalizado para MOSS. As crianças, você não sabe como é fácil você tê-lo! Saia do meu gramado!"

Não posso esperar.

</fim>

Technorati Tags: ,