2008-11-17 7 views

Respuesta

3

Por lo tanto, como seguimiento final de esta pregunta aquí está lo que finalmente hicimos para automatizar por completo este proceso.

Lo hicimos, como se sugirió, usamos el elemento ApplicationResourceFile en el archivo de manifiesto.

<?xml version="1.0" encoding="utf-8"?> 
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}" 
      xmlns="http://schemas.microsoft.com/sharepoint/" 
      DeploymentServerType="WebFrontEnd"> 
    <ApplicationResourceFiles> 
    <ApplicationResourceFile Location="yourappname.resx"/> 
    <ApplicationResourceFile Location="yourappname.en-US.resx"/> 
    </ApplicationResourceFiles> ... 
</Solution> 

De hecho, esto puso los archivos en la carpeta "recursos". Por lo tanto, simplemente accedimos los recursos a partir de ahí en el código de este modo:

string appPath = HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath); 
ResourceManager resX = ResourceManager.CreateFileBasedResourceManager("ResourceFileName", appPath + "resources", null); 

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    AddResource(resX, "DefaultTextBoxLabelText"); 

Corremos este código en el constructor y añadimos las entradas del archivo de recursos en un diccionario local. Debe usar RunWithElevatedPrivileges porque la nueva carpeta de "recursos" que se crea solo es accesible por la cuenta de AppPool.

2

Los archivos de recursos de la aplicación no se pueden implementar a través de una función a menos que ejecute un código e inicie un trabajo del temporizador de SharePoint que copia los archivos en la carpeta App_GlobalResources en cada servidor front-end web.

En su lugar, debe dejar que SharePoint Solutions Framework implemente los archivos .RESX en la carpeta App_GlobalResources en cada servidor. Puede especificar los archivos de recursos de aplicación de la siguiente manera en el archivo de su paquete manifest.xml solución WSP:

<?xml version="1.0" encoding="utf-8"?> 
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}" 
      xmlns="http://schemas.microsoft.com/sharepoint/" 
      DeploymentServerType="WebFrontEnd"> 

    <ApplicationResourceFiles> 
    <ApplicationResourceFile Location="yourappname.resx"/> 
    <ApplicationResourceFile Location="yourappname.en-US.resx"/> 
    </ApplicationResourceFiles> 

... 
</Solution> 

Al implementar el paquete de soluciones WSP utilizando STSADM o Administración central, el marco de soluciones de SharePoint se iniciará un trabajo del temporizador que implementa estos archivos en la carpeta App_GlobalResources de todas las aplicaciones web a las que decidió implementar la solución.

+0

por lo tanto, esto parece muy cerca, pero cuando uso el elemento ApplicationResourceFile crea una carpeta "recursos" y coloca el archivo no existe en la carpeta App_GlobalResources . – webwires

+0

Según http://www.mikhaildikov.com El manifiesto de la solución WSS contiene dos elementos con nombres que implican tener algo que ver con la implementación del archivo RESX. Son y . Desafortunadamente no son realmente útiles y básicamente pueden ser ignorados. – webwires

+0

Suspiro: este es un viejo error en SharePoint que estaba seguro de que MS finalmente solucionó con la actualización de la infraestructura. ¡No puedo creer que todavía esté allí! Pero aún así recomendaría ir a la solución anterior e iniciar un trabajo de temporizador de una sola vez para copiar los archivos de la carpeta de recursos a App_GlobalResources –

0

Recientemente nos encontramos con el mismo problema en nuestra instalación de granja. Desafortunadamente, al agregar entradas de ApplicationResourceFile en el manifiesto solo se obtienen recursos en la carpeta Resources.

Si bien se puede implementar manualmente los archivos de recursos de recursos para App_GlobalResources con stsadm copyappbincontent (debe ser emitida en cada servidor front-end), que acabó creando un trabajo de temporizador para copiar los archivos manualmente, como se indica here:

8

Gracias a todos por sus respuestas, pero como la mejor solución para SharePoint 2010 es la siguiente:

  • Agregar nuevo elemento> Módulo
  • Copiar (o) Añadir sus archivos de recursos allí
  • Cambio " Deployment Type "propiedad de cada archivo de recursos en appGlobalResource
  • Cambiar la propiedad" Deployment Location> Path "a vaciar para que el archivo de recursos se despliegue correctamente en" App_GlobalResources "en su aplicación web

enter image description here

2

Para SharePoint 2010 necesita cambiar el nombre del nodo XML por lo que se copiará a la nueva carpeta App_GlobalResources en lugar de carpeta de recursos en C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 enlace de MSDN: http://msdn.microsoft.com/en-us/library/ms463158.aspx

Ejemplo:

<Solution SolutionId="{8a2f91f2-db85-4eb3-8e7c-330f05246e1a}" 
      DeploymentServerType="WebFrontEnd" 
      xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <ApplicationResourceFiles> 
     <App_GlobalResourceFile Location="yourResourceFile.resx"/> 
    </ApplicationResourceFiles> 
Cuestiones relacionadas