2012-05-31 4 views
2

내가 quartz.net 호출하는 Windows 서비스를 다른 다른 폴더에 어셈블리 (개별 일정을) 넣어Quartz.net는 다음과 같이/빈

/bin/  "Various Dlls for my windows service" 
/bin/Quartz/ "Includes by schedule plugins (Seperate classes and my Jobs file) 

probl : 나는 다음과 같은 폴더 구조를 고안 내 Windows 서비스를 게시에

<add key="quartz.plugin.xml.fileNames" value="~/quartz/quartz_jobs.xml" /> 

내가 가지고있는 것들은 석영이/bin /의 루트에 그들을 복사하지 않으면 내 어셈블리를 찾지 못한다.

모든 아이디어를 어떻게 별도의 폴더에 보관할 수 있습니까?

답변

2

Google 그룹의 Karell에게 감사드립니다.

Heres이 질문을 해결하는 코드입니다.

AppDomain currentDomain = AppDomain.CurrentDomain; 
    currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler); 


private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) 
     { 

      Assembly MyAssembly,objExecutingAssemblies = Assembly.GetExecutingAssembly(); 
      AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies(); 
      if(args.Name.Contains("Coyname.Product.Service.Scheduler")) 
      { 
       string assName = Parser.ParseAssemblyNameReference(args.Name); 
       var rootDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
       var pluginDir = Path.Combine(rootDirectory, "Quartz"); 
       pluginDir += string.Format("\\{0}.dll",assName);; 
       MyAssembly = Assembly.LoadFrom(pluginDir); 
      } 
      else 
      { 
       MyAssembly = Assembly.LoadFrom(string.Empty); 
      } 
      return MyAssembly; 
}