Sellest kuidas embedded JS UI projektist kätte saada..

WebResource on äärmiselt mugav vahend javascripti, Css'i, pilte jms oma kompileeritud assembly'ga kaasa panna. Ilus ja lihtne. Lühikirjeldus näiteks siin:
http://www.aspcode.net/Including-WebResource-in-ASPNET-server-control.aspx

Seda häirivam on avastamine, et nii lihtne asi ei tööta miskipärast. mitmed ajad tänasest päevast debugisin ühte Javascripti faili, mida ma soovisin oma UserControli sees tarbida, kuid mis kangekaelselt keeldus kättesaadav olemast.

UI projekt, fail kaustas: /JS/Base.js

AssemblyInfo.cs:

[assembly: WebResource("SomeProject.JS.Base.js", "text/javascript")]

Myfile.cs:

var scriptManager = this.Page.ClientScript;
if (!scriptManager.IsClientScriptIncludeRegistered(JavascriptResourceName))
{
     scriptManager.RegisterClientScriptInclude(JavascriptResourceName,
     scriptManager.GetWebResourceUrl(this.GetType(), JavascriptResourceName));
}


Kutsudes välja javasscripti meetodit sellest failist, kurdetakse mulle, et sellist ei leita..

debug sessioon:
1) Kas dll'is on JS-fail olemas ? Vaatasin reflectoriga, olemas.
2) Kas scriptmanager lisas script-viite html'i ? Jah, olemas.
3) kas javascript on html'ist võetavalt URLilt kättesaadav ? ja sain oma EI!

Tuleb tunnistada, et see tekitas hämmeldust. Kuhu see kaduda sai?

Autentimise probleem ? Debugisin - Webresource päring annab kenasti cookie kaasa ja autenditakse probleemita.

..

Ja siis laekus: scriptManager genereerib vale URL'i! sest this.GetType() on ju genereeritud _ascx- klassis, mis ei paikne mitte samas Assembly's kus JS. Üllatustevabalt Quckfix töötas nagu planeeritud:

var scriptManager = this.Page.ClientScript;
if (!scriptManager.IsClientScriptIncludeRegistered(JavascriptResourceName))
{
    scriptManager.RegisterClientScriptInclude(JavascriptResourceName,
        scriptManager.GetWebResourceUrl(typeof(AddressRow), JavascriptResourceName));
}