Estaba trabajando en una función la semana pasada que añadiría algunos receptores de eventos a una instancia específica de la lista. (He mencionado un poco sobre ese receptor lista aquí).
Utilizando la línea de comandos, Pude instalar la característica con ningún error (pero véase más abajo para el error oculto). Cuando trató de implementar la función en el sitio, MOSS se quejó de una "FileNotFoundException" error. Esta entrada de blog describe cómo lo solucioné.
Este es el error que MOSS me mostró en el navegador web:
Característica ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ no se pudo instalar porque la carga de la unidad del receptor de sucesos "xyzzyFeatureReceiver_0" no se pudo: System.IO.FileNotFoundException: No se pudo cargar archivo o ensamblado ' xyzzyFeatureReceiver_0’ o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Nombre de archivo: ' xyzzyFeatureReceiver_0’ en System.Reflection.Assembly.nLoad(Nombre de archivo AssemblyName, Cadena codeBase, Pruebas assemblySecurity, Asamblea locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound Boolean, ForIntrospection Boolean) en System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Pruebas assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean) en System.Reflection.Assembly.InternalLoad(Cadena assemblyString, Pruebas assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean) en System.Reflection.Assembly.Load(Cadena assemblyString) en Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject() AVS: Registro de enlace de la Asamblea esté apagado. Para habilitar el registro de falla de enlace de Asamblea, establecer el valor del registro [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) Para 1. Nota: Hay alguna penalización de rendimiento asociado con el registro de fracaso de Asamblea bind. Para desactivar esta característica, eliminar el valor del registro [HKLMSoftwareMicrosoftFusion!EnableLog].
Solucionar problemas con Windows SharePoint Services.
|
Sé cómo deliberadamente causar ese error: No instale al ensamblado en la GAC. Pero, fue en la GAC. Normalmente instalar a ensamblados en la GAC arrastrándolas hasta la c:\carpeta windowsassembly explorador de windows. Nunca he sentido 100% cómodo hacerlo, porque siempre pensé que Gacutil existe por una razón … así que intenté. No hace ninguna diferencia.
He buscado en las Internets y encontré este post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
El cartel pasó a usar la misma broca de raíz del código (en el libro de WSS dentro de esta lista) así que esa fue una señal de esperanza. Sin embargo, la sugerencia de decorar el conjunto con un [Asamblea: ] Directiva no tiene sentido para mí. De todos modos lo probé y tenía razón. No hace ninguna diferencia.
Entonces me di cuenta que mi definición de la clase no era público. Le hice público y que no hizo ninguna diferencia.
Siguiente, Fui a la molestia de permitir que la "Asamblea bind fallo registro" (siguiendo las instrucciones útiles y precisas proporcionados) y esto es donde las cosas comenzaron a obtener interesantes. Ese registro me muestra que el tiempo de ejecución busca por todas partes en el servidor para mi montaje. Incluso parece ser buscando en mi botiquín. Pero … no busca en la GAC.
Puse en mi chaqueta de invierno e ir a buscar los Internets y encontrar que alguien ha tenido este problema también. La larga discusión en publicación peters apagado en nada y no encuentro una solución.
Muevo mi Asamblea en uno de los lugares que el registro afirma está buscando y hacer avanzar un poco más. Yo estoy recompensado con un nuevo error en el navegador cuando intento activar la función de:
Error al crear el objeto receptor de característica del conjunto "xyzzyFeatureReceiver_0", Escriba "Conchango.xyzzyFeatureReceiver" para la función b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valor no puede ser nulo. Nombre de parámetro: tipo en System.Activator.CreateInstance(Tipo tipo, Privada booleano) en System.Activator.CreateInstance(Tipo tipo) en Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Solucionar problemas con Windows SharePoint Services.
|
Tiempo para un último viaje a las Internets!
Esta vez puedo saber, como era de esperarse lo suficientemente, que MOSS emite este error porque la Asamblea no está en la GAC.
Quiero sacar algo positivo de esto y tratar de sentir un poco orgullosos que he creado el Fugitivo de ensamblados MSIL, pero no funciona. Estoy molesto solo llano. Me encontré murmurando "huevo o la gallina" bajo mi aliento.
Finalmente decido punt. Crear un proyecto completamente nuevo y copiar/pegar el código del proyecto incredible-cloaked-from-the-GAC-assembly no trabajo sobre este nuevo proyecto. (Busco una bandera de compilación llamada algo así como "hide from enlace si instalado en el GAC" pero no puede encontrar uno).
Instalar la característica y activarlo y … funciona! Por lo tanto, Después de todo lo que, Básicamente tuve que ' reiniciar’ mi proyecto. Esta es otra razón por qué odio a equipos.
Aprendo algo útil de este. Había instalado características usando la línea de comandos stsadm todo el dia y la "-la fuerza" opción por costumbre. Por alguna razón, No utilizo la fuerza opción - cuando he instalado el nuevo proyecto. A esta hora, Hice realidad, realmente olvide copiar el montaje de este nuevo proyecto en la GAC. Como un resultado, Recibí esa FielNotFoundException"" error. A esta hora, I got it from stsadm, no cuando trató de activar la función vía el web browser. Por lo tanto, -fuerza realmente juega dos papeles. Le permite volver a instalar una característica existente. También le permite instalar una característica buggy que no puede trabajar en tiempo de ejecución mediante la supresión de los errores. Probablemente dice tanto en la ayuda en alguna parte pero nunca lo noté.
</final>