在SilverLight執行Native dll的方法

若想要叫用Client端Win32 Api的話可以使用DllImport的方法叫用 如下:
[DllImport("User32.dll")]
private static extern Boolean MessageBeep(uint beepType);
但若是透過自己寫的或ThirdParty的Native dll 則需使用Resource連結的方式
1.先將dll的屬性設為Resource及永遠複製
clip_image001
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













這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS