Okay, I found the problem.

Basically, it boils down to the way CompilerBase is calculating the
manifest resource name. If you look inside
CompilerBase.GetManifestResourceName (the one with 4 parameters), in
ComputerBase.cs,  you'll see:

    if (resourceLinkage != null && resourceLinkage.IsValid) {
        manifestResourceName = manifestResourceName.Replace(
                actualFileName, resourceLinkage.ToString());
    }

That's basically the problem. When you pass in so.aspx.resx to this
function, and get down to this code, manifestResourceName is
"so.resources", actualFilename is "so", and resourceLinkage is
"ngservices.so". When you do this global string replace of "so" with
the resourceLinkage, it find its twice: in the filename and the
extension. That's why you get what I saw:

    ngservices.so.rengservices.sources

Of course! It replaced two instances of "so", when clearly you only
meant to replace the first one. This will occur any time the root
filename is some sub-string of "resources".

What I don't get is why all the contortions with String.Replace()
here. As near as I can tell, you know that manifestResourceName is
always going to be actualFilename + ".resources". So I changed the
replace with:

    manifestResourceName = resourceLinkage.ToString() + ".resources";

and everything seems to be kosher. I'm not sure this is a 100%
solution, but it certainly works for me.

It's easily reproducible. Create a web project, create a web form
named "so.aspx". It will fail when you use the <solution> task.

Similarly, there is code above that that does more String.Replace()
that could well be broken, too. Hopefully, I've impressed that this is
a bad idea, and I'd say that the better idea is to re-write the code
in terms of a specialized parser rather than just blindly using
String.Replace(). :)

- Brad

-- 
Brad Wilson
http://www.dotnetdevs.com/
http://dotnetguy.techieswithcats.com/

"Why do I think that people who live and breathe SQL are from a
distant alien culture?" - Stuart Celarier on the WTOT mailing list


-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
Nant-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to