assembly resolve, deployment, .net
[b][size=large]Scenario:[/size][/b]
[list]
[*]想要使用一个非GAC部署的assembly。我遇到的情况是要使用sql server几个analysis service的assembly,它们会被部署到sql server的安装路径。
[*]不想把这几个assembly和工程一同部署以减小安装包或者要求客户一定会安装相应的assembly(一般情况是要求客户安装一些第三方的程序依赖)
[*]不考虑被依赖的assembly内部的类型依赖。这样就不需要用发射去一个个的“找”类型来用。
[*]使用当前AppDomain而不重新创建(此举完全输入偷懒行为,并非良策!)
[/list]
[b][size=large]Solution:[/size][/b]
[list]
[*]使用[url=http://msdn.microsoft.com/zh-cn/library/system.appdomain.assemblyresolve.aspx]AppDomain::AssemblyResolve[/url]事件
[*]为当前AppDomain挂上该事件
[*]在事件处理方法中根据event arg获取assembly name
[*]根据assembly name加载对应Assembly并返回
[/list]
[b][size=large]Scenario:[/size][/b]
[list]
[*]想要使用一个非GAC部署的assembly。我遇到的情况是要使用sql server几个analysis service的assembly,它们会被部署到sql server的安装路径。
[*]不想把这几个assembly和工程一同部署以减小安装包或者要求客户一定会安装相应的assembly(一般情况是要求客户安装一些第三方的程序依赖)
[*]不考虑被依赖的assembly内部的类型依赖。这样就不需要用发射去一个个的“找”类型来用。
[*]使用当前AppDomain而不重新创建(此举完全输入偷懒行为,并非良策!)
[/list]
[b][size=large]Solution:[/size][/b]
[list]
[*]使用[url=http://msdn.microsoft.com/zh-cn/library/system.appdomain.assemblyresolve.aspx]AppDomain::AssemblyResolve[/url]事件
[*]为当前AppDomain挂上该事件
[*]在事件处理方法中根据event arg获取assembly name
[*]根据assembly name加载对应Assembly并返回
[/list]