程序集绑定信息的来源可以是各种配置文件、代码中的属性,以及runtime中的AppDomain等。以下是几个示例:
在上面的示例中,程序集绑定信息来自于app.config文件中的
[assembly: AssemblyVersion("3.0.0.0")]
[assembly: AssemblyFileVersion("3.0.0.0")]
在上面的示例中,程序集绑定信息来自于代码中的[assembly]属性。它指定了版本号为“3.0.0.0”。
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.StartsWith("MyAssembly"))
{
return Assembly.LoadFile(@"C:\MyAssembly.dll");
}
return null;
}
在上面的示例中,程序集绑定信息来自于runtime中的AppDomain。在应用程序启动时,我们可以将当前域的AssemblyResolve事件处理程序设置为“CurrentDomain_AssemblyResolve”。当需要解析一个程序集引用时,如果AppDomain无法通过搜索程序集目录来找到对应的程序集,则会触发这个事件,而事件处理方法则可以返回一个自定义程序集,从而完成程序集的动态加载。
总之,程序集绑定信息不只来自一个地方,而是来自多个来源,并且它们是有优先级的。在程序运行过程中,我们可以通过