0
我有一個WCF服務,部署到IIS的x86和x64實例。該服務本身是爲AnyCPU編譯的。該服務使用C++程序集,它具有兩種不同的位。兩種不同的位都被命名爲相同(foo.dll)有沒有辦法用WCF服務部署x86和x64版本的組件?
是否有一種方法可以部署兩種不同的bitness,並讓IIS/WCF實時動態顯示需要什麼?現在,弄清楚要部署什麼是一場噩夢。
有沒有更好的方法?
我有一個WCF服務,部署到IIS的x86和x64實例。該服務本身是爲AnyCPU編譯的。該服務使用C++程序集,它具有兩種不同的位。兩種不同的位都被命名爲相同(foo.dll)有沒有辦法用WCF服務部署x86和x64版本的組件?
是否有一種方法可以部署兩種不同的bitness,並讓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
你是如何加載C++動態鏈接庫目前? –
@Samshiles接口是相同的,所以只有2個版本。這工作正常。但是當我從我的工作站部署到某個開發箱時,總是會出現混淆什麼是什麼框的問題。 – AngryHacker