Ign*_*cia 1 .net assemblies loader
对于应用程序,我需要检查Crystal Reports运行时库的可用性.我试过的是:
void CheckCrystal()
{
try
{
CrystalDecisions.Windows.Forms.CrystalReportViewer test = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
test.Dispose();
}
catch (System.Exception)
{
PTrace.Error("Some dependences needed to run Crystal Reports are not available.");
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为在调用方法之前调用CheckCrystal的方法中会抛出有关缺少的Crystal依赖项的File.IOException.就像.Net知道在需要它之前需要组装.这是真的?我该如何改变这种行为?
提前致谢.
这是因为代码是基于每个方法进行JIT的,因此当您第一次尝试调用时CheckCrystal()
,.NET首先尝试编译它,然后加载所有必需和尚未加载的程序集.
.NET允许您在程序集解析失败时拦截.为此,请订阅AppDomain.AssemblyResolve
活动.