While pursuing a spearate problem I've come to a very peculiar situation. A demo code would be:
public class Global : HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Log("In Application_Start");
SomeClass.SomeProp = ConfigurationManager.AppSettings["PropValue"];
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
Log("In Application_BeginRequest");
try
{
this.Application_Start(null, null);
}
catch ( Exception ex )
{
Log(ex.ToString());
}
Log("At the end of Application_BeginRequest");
}
}
What I get in my log is:
In Application_BeginRequest
Could not load file or assembly 'vjslib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
System.IO.FileNotFoundException
at MyRootNamespace.Global.Application_Start(Object sender, EventArgs e)
at MyRootNamespace.Global.Application_BeginRequest(Object sender, EventArgs e) in D:\My Documents\Visual Studio 2008\Projects\SolutionDir\ProjectDir\Global.asax.cs:line 109
At the end of Application_BeginRequest
This makes no sense to me whatsoever. Consider:
vjslib
is referenced by my main project (assembly) which includes theGlobal
class. Why was the assembly loaded at all if its dependencies could not be resolved?SomeClass
is in another assembly which also referencesvjslib
.SomeClass
does usevjslib
and some members do expose classes that are derived from classes invjslib
, but the property used here is just a plain old string.- Why is there no line number in the first line of the stack trace?
Are the dependencies resolved on a per-method basis? I thought that Microsoft doesn't do such things anymore. What's going on here?