WebResource et PerformSubstitution
Les WebResources vous connaissez ? non ? ASP.net 2.0 donne la possibilité de mettre les fichiers de ressources, comme les fichiers JavaScript directement en ressource dans l'assembly. Pour cela dans Visual Studio il suffit de mettre le Build Action a Embedded Resource.

Puis rajouté l'attribut d'assembly WebResouce comme cela :
[assembly: WebResource("Itelios.Web.UI.NeoGlobe.js", "text/javascript")]
Vous pouvez ajouter votre fichier JavaScript en utilisant la méthode
Page.ClientScript.RegisterClientScriptInclude("Neoglobe",
Page.ClientScript.GetWebResourceUrl(typeof(Neoglobe), "Itelios.Web.UI.NeoGlobe.js"));
A noter que si vous utilisez Atlas Microsoft Ajax et que votre contrôle hérite de ScriptControl vous pouvez utiliser la méthode GetScriptReferences
protected override System.Collections.Generic.IEnumerable<ScriptReference> GetScriptReferences()
{
ScriptReference reference = new ScriptReference("Itelios.Web.UI.NeoGlobe.js", "Itelios.Neoglobe");
List<ScriptReference> list = new List<ScriptReference>();
list.Add(reference);
return list;
}
Sans oublier de l'enregister comme ScriptControl dans le ScriptManager associé à la page:
ScriptManager.GetCurrent(Page).RegisterScriptControl<NeoGlobe>(this);
Mais si dans votre fichier JavaScript vous avez besoin de connaitre l'url d'une image elle aussi contenu en ressource de votre assembly, comment faire ? Les urls des fichiers de ressources ne sont pas prédictible vous ne pouvez donc pas les coder en dur dans le fichier JavaScript, vous devez alors utiliser l'argument PerformSubstitution de l'attribut WebResource :
[assembly: WebResource("Itelios.Web.UI.NeoGlobe.js", "text/javascript", PerformSubstitution=true)]
Pour avoir accès à l'url de cette ressource dans le fichier JavaScript il vous faut utiliser cette syntaxe :
debug.trace('<%=WebResource("Itelios.Web.UI.dotnet.gif")%>');
Pour en savoir plus sur les WebResource et le paramètre PerformSubstitution : WebResourceAttribute.PerformSubstitution Property