Microsoft KB Archive/910445

= How to embed resources in ASP.NET 2.0 assemblies =

Article ID: 910445

Article Last Modified on 5/11/2007

-

APPLIES TO


 * Microsoft ASP.NET 2.0

-



How to embed resources in ASP.NET 2.0 assemblies
''To customize this column to your needs, we want to invite you to submit your ideas about topics that interest you and issues that you want to see addressed in future Knowledge Base articles and Support Voice columns. You can submit your ideas and feedback using the Ask For It form. There's also a link to the form at the bottom of this column.''



Introduction
Hi, this is Karthik with the Microsoft ASP.NET developer support team here at Microsoft. I have been working with ASP.NET for the past year and a half and have been involved with software development for about eight years now. The concept of embedding resources in assemblies that I discuss in this article is a pretty cool one. This could be very useful in large Web applications that involve lots of reusable components.

In this article, I will talk about and provide step-by-step instructions for creating and using embedded resources.



What are these resources?
These resources could be any resources that you need for proper display, functioning, validation, and execution of the components in your project. These are vital resources that tend to and need to stay consistent across the application.

What are the advantages of embedding them?
You could put all your dependencies into one single assembly and then ship the assembly out to whoever needs it without having to worry about stuff like does the user has the latest client-side scripts? Did the user remember to put the images in the /something/something/images folder? Did the user set the permissions for the new folder accordingly? Is there any conflict between the resources that my library requires and any other library? Well, the list could go on.

Embedding the resources in an assembly
To do this, follow these steps:  Add the resource as an existing item into the project. Set the resource type to be &quot;embedded resource&quot;.

Note This option is not available if you add the item directly to the Web site itself. Here is what you would see in such a situation:



You can only apply this option on resources that are included with class libraries (assemblies in their own right). Here is what you would see:

  Next, open the AssemblyInfo.cs file of that library, and then add the following line of code to it: [assembly: WebResource(&quot;WebControlLibrary1.1.JPG&quot;, &quot;img/jpeg&quot;)]   Add the following line of code and a reference to System.web.dll if missing: using System.Web.UI You need to use the namespace when you declare the resources as well as when you request the resources.  In the page (or in the control) that needs these resources, use the Page.ClientScript.GetWebResourceUrl method to get them.

For example, you might use the following methods:   To get an image that is used as an embedded resource, you use the following code example. Image img = new Image;

img.ImageUrl = Page.ClientScript.GetWebResourceUrl(typeof(WebControlLibrary1.WebCustomControl1), @&quot;WebControlLibrary1.1.JPG&quot;);   To add a style sheet to a page header, you use the following code example. string includeTemplate =&quot;&quot;;

string includeLocation = Page.ClientScript.GetWebResourceUrl(typeof(WebControlLibrary1.WebCustomControl1), &quot;Assembly.styles.css&quot;);

LiteralControl include = new LiteralControl(String.Format(includeTemplate, includeLocation)); HtmlControls.HtmlHead) Page.Header).Controls.Add(include); </li></ul> </li></ol>

<div class="moreinformation_section">