我有一个部署到 IIS 的 x86 和 x64 实例的 WCF 服务。服务本身是为 AnyCPU 编译的。该服务使用 C++ 程序集,它有两种不同的位数。两种位的名称相同(foo.dll)
有没有办法部署这两种比特位并让 IIS/WCF 即时找出需要什么?现在,弄清楚要部署什么有点像噩梦。
有没有更好的办法?
这个怎么样?
public void LoadAssembly()
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
var a = Assembly.Load("foo");
Type myType = a.GetType("Example");
// Get the method to call.
MethodInfo myMethod = myType.GetMethod("MethodA");
// Create an instance.
object obj = Activator.CreateInstance(myType);
// Execute the method.
myMethod.Invoke(obj, null);
}
private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (IntPtr.Size == 4)
{
// return your 32-bit.
}
else if (IntPtr.Size == 8)
{
// return your 64-bit.
}
}
有用的链接:
http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx http://msdn.microsoft.com/en-us/library/25y1ya39.aspx