SharePoint 2010 Resource File Deployment Done Easy

May 28 2012 7 comments

Deployment of resource files with SharePoint has always been a little tricky. With MOSS we used features to provision resource files. With SharePoint 2010 it was a little easier but not enough.
There are blogs with some ideas how to make it easier to deploy resources in multiple locations here, here and here. They did not anyways fill all my requirements.

I do not want to:
1. Use feature to deploy resources
2. Keep two copies of the same resource file in the project
3. Edit the manifest.xml in visual studio.
4. To have “Resources” subfolder inside App_GlobalResources folder.

With the help of the blog post above, I managed to create solution where you only keep one copy of the resource file and that it is easy to manage and easy to deploy to the whole farm.

Add a mappedfolder to your project and point it to 14\Resources folder. Then add your custom resource file(s) to it:

Add a Empty Element to your project and name it App_GlobalResources:

Delete the feature it created automatically, you will not need it:

Delete the Elements.xml file it automatically created, you will not need that:

Edit the SharePointProjectItem.spdata file inside the App_GlobalResources folder (If you cannot see it, press “Show All Files” button from the Solution Explorer). Replace the empty

<Files />

node with the following xml, with your own path and file name:

  <Files >
    <ProjectItemFile Source="..\Resources\EasyResource.en-US.resx" Type="AppGlobalResource"/>
    <ProjectItemFile Source="..\Resources\EasyResource.fi-FI.resx" Type="AppGlobalResource"/>
    <ProjectItemFile Source="..\Resources\EasyResource.resx" Type="AppGlobalResource"/>
  </Files>

If you add new resource files later remember to update this file too.

Double click the Package folder and add the App_GlobalResource item to the Package:

Build and deploy, all resource files will be deployed to 14Hive and WebApplication.
14Hive:

WebApplication:

When editing the resource files, just a normal Update-SPSolution command with PowerShell will update the resources to the whole Farm. I hope this helps someone struggling with the manual copies or other hacks with deployment of resource files.

***********************************************
Jerry Seinfeld: Why not? We’re neighbors. What’s mine is yours.
Cosmo Kramer: [leaning against the door-frame and looking around in wonder] Really?
***********************************************

Popularity: 9% [?]

7 comments to “SharePoint 2010 Resource File Deployment Done Easy”

  1. Sven G says:

    Thanks! Finally a decent method…

  2. user01 says:

    I modify the SharePointProjectItem.spdata and write :

    I am getting the error:” The specified value for the attribute “Type” is not valid “. Please Help

  3. [...] SharePoint 2010 Resource File Deployment Done Easy | SharePoint Blues [...]

  4. tristian o'brien (@tristianobrien) says:

    in visual studio, select “show all files” so that you can see all the .spdata files, check the Type element for say all your ProjectItemFile nodes, mostly thay should be of Type=”ElementFile”

  5. Jarno Leikas says:

    I noticed that when using Visual Studio 2012 with Office Developer tools for SharePoint 2013, this might crash your Visual Studio 2012 on publish with a NullReferenceException.

    In that case, you can try leaving the default Elements.xml file under the App_GlobalResources folder. The file should have at least an empty element in it, but it doesn’t need anything else.

    That will, however, cause Visual Studio 2012 to warn about the file being added as a package-level element manifest. You can then set the deployment type for that file as NoDeployment, and things will still work! So it looks like the build just checks if there’s an XML file with an tag inside it, and if it does find one, it’ll be happy.

    Do note, that the Office Developer Tools preview version didn’t crash this way, it only started doing it with the final release.

  6. Thwnks for sharing your info. I really appreciate your efforts and
    I will be waiting for your next post thanks once
    again.

Leave a Reply