2013-07-18 105 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