2013-07-18 106 views
0

我有一个WCF服务,部署到IIS的x86和x64实例。该服务本身是为AnyCPU编译的。该服务使用C++程序集,它具有两种不同的位。两种不同的位都被命名为相同(foo.dll)有没有办法用WCF服务部署x86和x64版本的组件?

是否有一种方法可以部署两种不同的bitness,并让IIS/WCF实时动态显示需要什么?现在,弄清楚要部署什么是一场噩梦。

有没有更好的方法?

+0

你是如何加载C++动态链接库目前? –

+0

@Samshiles接口是相同的,所以只有2个版本。这工作正常。但是当我从我的工作站部署到某个开发箱时,总是会出现混淆什么是什么框的问题。 – AngryHacker

回答

0

这个怎么样?

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