因為打工的需要,寫了一個簡單VSTO Excel Solution,可是發行後卻無法正常地使用。

把發行後的Excel檔點開,會出現如下的訊息:
Office文件自訂
目前的.NET安全性原則不允許執行自訂。請勿變更您電腦中的安全性原則。.NET安全性原則是由您的系統管理員或撰寫自訂的程式開發人員所控制。您仍然可以編輯及儲存文件。請聯絡您的系統管理員或此文件的作者,以取得進一步協助。



英文版則會出現:
Office document customization is not available
The customization assembly could not be found or could not be loaded. You can still edit and save the document. Contact Your administrator or the author of this document for futher assistance.


接著Excel原本的VSTO功能都無法使用,變成了普通的Excel檔。

總算在昨天找出原因了,要使用VSTO組件,就要設定該組件(.dll)的安全性原則。
先照著「控制台」→「系統管理工具」→「Microsoft .NET Framework 2.0 組態(Configuration)」點開,會出現如下的視窗:
(若找不到該Configuration Tool,請參閱這篇「找不到.NET Framework 2.0 Configuration」)

再照著「.NET Framework 2.0 Configuration」→「我的電腦」→「執行階段安全性原則」→「使用者」→「程式碼群組」,最後在「All_Code」上按「新增...」會跳出如下的視窗:

填完想要的名稱和描述後,下一個畫面如下:

條件類型選擇「URL」,並在下方的URL欄位裡填入組件(.dll)的完整位置,再按下一步。

簡單起見,就選擇「使用現有的使用權限集合」並設定成「FullTrust」,按下一步就會出現完成的畫面啦。


設定完成後,再開一次剛才的Excel檔,先前的警告訊息就不會出現了,而且裡面的功能也可以正常使用了!嗚嗚~打工的東西總算能交差了…

這些步驟可能有辦法自動化設定完成,不過我懶,而且目前也不太需要,就繼續沒有研究了。記下來是怕我將來會忘記怎麼設定,就這樣。

2008/05/18更新:
今天發現一個很重要的問題,就是發行之後的Excel檔是根據絕對路徑去參考組件(.dll)的,也就是說移動了組件(.dll)的位置,就算安全性原則設計正確,Excel檔也無法正常運作。不過Excel檔本身就可以任意地更改位置。之前誤以為Excel檔是以相對路徑參考組件(.dll)的,浪費超多時間才發現這個問題……Orz

thePaul 發表在 痞客邦 PIXNET 留言(0) 人氣()