在SilverLight執行Native dll的方法
[DllImport("User32.dll")]
private static extern Boolean MessageBeep(uint beepType);
但若是透過自己寫的或ThirdParty的Native dll 則需使用Resource連結的方式
1.先將dll的屬性設為Resource及永遠複製
2.執行連結方法NativeDllHelper.SetupNativeDllFolder("TSCLIB.dll");
此程式碼請至原作者提供的檔案下載
https://github.com/cureos/nativedll
以上的執行在本機Localhost,127.0.0.1都不會有問題,但在有網域或電腦名稱的網域
會出現"呼叫機器碼失敗。方法必須是安全性關鍵或安全性安全關鍵才能呼叫機器碼"或
"System.Security.SecurityException: 不允許檔案作業。拒絕存取路徑"..等錯誤
這是因為這些方法的執行因安全性的限制一定要在OOB(Out Of Browswer)下執行。
參考文章
http://cureos.blogspot.tw/2011/09/pinvoke-bundling-native-dlls-in.html