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: ,

Estatísticas do blog

Pensei que algumas pessoas podem estar interessadas nas estatísticas do meu blog. Pode usar o meu como um benchmark para comparar o seu próprio.

Estou executando o meu blog no windows espaços ao vivo. Eles coletam estatísticas para mim e não conheço nenhuma maneira de controlar isso. É bom que ele vai, Mas é bastante limitado em que eu não posso fazer muita análise real com ele. Eu adoraria, por exemplo, para ser capaz de gerar uma listagem de meu mais freqüentemente mensagens de sucesso, mas eu não consigo sem um processo manual proibitivo. Se alguém souber melhor, por favor me diga.

Live espaços status de me dizer: total de visitas por dia, total de acessos para os hits da semana e total desde o dia zero. Também me diz o que as pessoas faziam para chegar ao meu blog (EG. Google, Link do fórum MSDN, etc).

De certa forma, um sucesso"" é óbvio. Se você está lendo esta frase agora, Você quase certamente registrado como um hit único.

RSS é um pouco confuso. Por um lado, Dia todo vejo sucessos individuais de RSS. Mas, Também vejo RSS "varre". Uma varredura é quando eu vejo 20 ou 30 Sucessos RSS tudo dentro de uma janela do segundo uma ou duas. Presumo que estas são coisas automatizadas como o google check-in no meu site, Talvez navegadores de outras pessoas … Não tem certeza. Eles são definitivamente algum tipo de processo automatizado. Não posso dizer, no entanto, como muitos dos meus sucessos totais são automatizados e quantos tem um ser humano real do outro lado. Eu acho que pelo menos 100 vezes por dia são automatizadas.

Para os números!

Eu escrevi minha primeira entrada de blog em 27 de julho, 2007.

Eu tenho escrito aproximadamente 60 entradas de blog desde então, mais do que 50 que directamente se relacionam com SharePoint.

Comecei a manter um registo dos meus sucessos em uma planilha em uma base diária no final de setembro.

Início mensal:

Primeira semana de: Total de visitas
Outubro 1,234
Novembro 2,162
Dezembro 3,071
Janeiro 2008 4,253

Total por mês

Mês Total de visitas
Outubro 6,620
Novembro 11,110
Dezembro 13,138

Marcas de água de alta

Tipo Total de visitas
Melhor dia 958
Melhor semana 4,253
Total de visitas desde o dia Zero 42,438

Estou interessado em outros’ Estatísticas. Se você gostaria de compartilhá-las nos comentários, por favor, faça!

</fim>

Technorati Tags:

Manhã de domingo engraçados: “Sim, Sim, Sim. Blá, blá, blá.”

Há cerca de seis anos, meu filho de quatro anos de idade e eu estávamos assistindo lá em cima um Discovery channel "ataques de tubarão" especiais (possivelmente um presente). Ele era muito jovem no ponto e estava sempre preocupada que ele pode ver um show como este e como ele pode aguentar. Não queria que ele a desenvolver, por exemplo, qualquer especiais medos da água ou Blab algo impróprio para seus amigos e possivelmente causar sua rede de amigo do bebê vir a falhar para baixo.

Descoberta lida com esses tipos de assuntos muito bem. Não é sobre a criação de um medo de alguma coisa, Mas sim para mostrar como incomum é para tubarões para atacar humanos..

Assim, Estamos vendo isso e há um ataque particularmente assustador envolvendo uma garota pequena. Como descoberta está construindo o drama do ataque, meu filho (que sempre foi extremamente agitado Enfim), está ficando muito animado. Faço alguns ruídos sobre como incomum é para tubarões para atacar pessoas, e quanto a pobre garota deve sentir-se. Estou a tentar explicar que as pessoas recuperar esses eventos e tornar-se mais fortes, por isso. No entanto, Eu tinha interpretado mal sua excitação. Ele não estava preocupado com a garota em todos os. Em vez disso, ao mesmo tempo, batendo palmas de suas mãos, Ele me diz, "Os tubarões amá-lo! É uma maravilha. É maravilhoso. Seu sonho realidade!"

Eu pensei que isso foi hilário, Mas também muito perturbador. Por um lado, Eu estava contente — mesmo um pouco orgulhoso — que ele poderia ter fortes sentimentos empáticos, entre espécies que podem ser. Como seres humanos, precisamos desenvolver nossos músculos empáticos"" assim falar, ou você vai acabar como Esse cara 🙂 On the other hand, Ele estava se sentindo empatia entre espécies em direção a uma espécie que estava exibindo comportamento hostil à sua própria. Eu realmente estava lutando com isso quando o narrador usou a palavra "paradigma". Meu filho pegou nisso e me perguntou o que isso significava.

Isso não é uma palavra tão fácil de descrever para uma criança de quatro anos, Mas eu dei-lhe uma tentativa. Quando penso a palavra "paradigma", Thomas Kuhn é nunca longe dos meus pensamentos. Eu li A estrutura das revoluções científicas de volta ao Lafayette e para melhor ou para pior, a palavra "paradigma" está grávida de mais significado para mim. (Como a palavra "contato" Depois de ouvir uma voz de telefone filme me dizer onde eu poderia ver Esse filme [Eu pensei que o livro era melhor]; Eu sempre digo a mesmo, "CONTATO!" sempre que vejo ou ouço alguém dizer "contato").

De qualquer forma, Eu estou tentando explicar-lhe uma definição de kunhiana, que é "um movimento histórico de pensamento" e o que é uma "forma de pensar com uma série de pressupostos internos que são difíceis de escapar para as pessoas que vivem naquela época." É claro, você não pode falar como um de quatro anos, Então estou a tentar defini-lo sucessivamente para pequenos pedaços e sentimento um pouco orgulhoso de mim mesmo como fazê-lo. (Eu só sabia que que alguém fora da faculdade se importaria que eu tinha lido Kuhn!).

Só estou aquecendo para a tarefa quando ele me interrompe.. Acenando a mão em minha direção geral e nunca tirar seus olhos outro ataque de tubarão brutal, Ele apenas diz, "Sim, Sim, Sim. Blá, blá, blá.".

So much for that 🙂

Nesse momento, Eu decidi fugir, retoricamente falando, sentar-se, e assistir tubarões atacam os seres humanos com meu filho.

</fim>

Technorati Tags:

Alternar modo de exibição modo de exibição com base no ID de usuário em um formulário do InfoPath

Tivemos um desenvolvido um formulário do InfoPath com várias exibições para oferecer suporte a uma nova contratação / processo de ambientação. Quando a empresa contrata uma nova pessoa, o departamento de TI e outros grupos precisam agir (configurar a folha de pagamento, permitir o acesso aos aplicativos apropriados, Localize uma mesa, etc). Usamos na forma, mas uma visão diferente do formulário para cada uma dessas funções.

Esta empresa, QUE conhecem a maioria das pessoas envolvidas no processo de negócios são, Então, quando eles acessarem o formulário, seu modo de exibição padrão é um menu"" Ver os com botões que encaminhá-los para sua função específica. No entanto, Precisamos simplificar as coisas para o gerente direto a nova contratação. Esta pessoa não deve ver que qualquer do que coisas relacionadas. Na verdade, Ela deve ver apenas um modo de exibição do formulário e nem sequer têm uma opção para ver os outros modos de exibição.

No nosso caso, que direcionar a conta do gerente está diretamente ligada à forma cortesia de um entre em contato com o selector (que eu sempre estou querendo chamar um "people picker" por algum motivo).

As etapas são as seguintes:

1. No modo de design, Vá para ferramentas-> Opções de forma-> Abrir e salvar.

2. Selecione "regras".

3. Criar uma nova regra, cuja ação é "alternar para exibir" e cuja condição utiliza o nome de usuário() função.

nome de usuário() Retorna o simples"" nome de usuário sem o domínio. Se eu entrar no SharePoint com credenciais "domainpagalvin", nome de usuário() Retorna "pagalvin".

O seletor de contato fornece três bits de informações de um contato. O "AccountID" porção é mais útil para esse cenário. A única coisa que faz isso mesmo um pouco de desafio é que o seletor de contato (no meu ambiente de qualquer maneira) Retorna a ID de domínio e de usuário, como em "domainpagalvin". Isto nos impede de ter uma condição de igualdade direta desde AccountID ("domainpagalvin") nunca será igual a nome de usuário() ("pagalvin").

Podemos obter em torno desta usando o "contém" operador: AccountID contém nome de usuário().

Podemos tomá-lo ainda mais e pre-pend um domínio embutida na frente do nome do usuário() função para obter nossa verificação de igualdade e eliminar o risco de falsos positivos sobre o contém operador.

Temos realmente como alternar automaticamente o modo de exibição para outros usuários com base em sua associação de grupos de segurança do AD. Por exemplo, Quando um membro do "ele Analytics" grupo acessa o formulário, alternar automaticamente para o modo de exibição IT Analytics. Não tivemos tempo para implementá-lo, mas meu primeiro pensamento é criar um serviço web que teria um método como "IsMemberOfActiveDirectorySecurityGroup", passe a ele o nome de usuário() e retornar para true ou false. Alguém tem algum outro, idà © ia mais? Existe alguma função de SharePoint que pode aproveitar do InfoPath para fazer essa determinação?

</fim>

Technorati Tags:

Acidentalmente adicionando código para um formulário do InfoPath; Deliberadamente removê-lo

Ao trabalhar com botões em um formulário, muitas vezes adicione regras. Você acessar o editor de regras das propriedades do botão.

Quando clicar em torno rapidamente, é fácil para acidentalmente clicar em "Editar código do formulário" em vez de "regras …".

A primeira vez que fiz isso, Eu cancelei fora do editor de código. No entanto, Quando eu tentei publicar o formulário um pouco mais tarde, é necessário que publicar como um modelo de formulário aprovado pelo administrador" (avançado)". Eu não fiz qualquer programação e absolutamente não queria passar por um processo de aprovação desnecessários. Eu estava em um pouco de pânico no momento devido a limitações de tempo. Para superar isso, Eu simplesmente restaurei um backup anterior e continuou. Recentemente vi alguns posts de blog sobre pessoas que vão em XML do formulário para ajustar as coisas e eu tinha medo de que eu teria de fazer algo semelhante.

Hoje, Eu fiz de novo. Desta vez, Eu tinha um pouco mais tempo em minhas mãos e achei que você facilmente pode desfazer isso.

Ir para:

Ferramentas-> Opções de forma-> Programação: "Remover o código"

Ele não fica muito mais fácil do que.

</fim>

Technorati Tags: ,