2009-10-27 47 views
0

我正嘗試使用System.Web.UI.TemplateControl.LoadControl爲SharePoint應用程序構建模板化Web部件,並且遇到引用外部裝配的控件時遇到問題。裝配參考控制上的LoadControl

我與前幾行這樣的用戶控制:

<%@ Control Language="C#" ClassName="MyControl" %> 
<%@ Assembly Name="AjaxControlToolkit" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 

腹板部從實現模板和其他一些公用事業這是在所謂的「MyWebParts」的組件(基web部件導出例如),而派生的Web部件類位於「MyProject」中。 MyProject有一個「MyWebParts」(顯然)和「AjaxControlToolkit」的引用,但「MyWebParts」沒有引用「AjaxControlToolkit」。在運行時,當模板Web部件嘗試加載用戶控件(「controltemplates」SharePoint根文件夾中的.ascx文件)時,它會調用它在程序集中繼承的基本方法,並且會拋出HttpParseException,指示它無法' t加載所需的組件。 EventViewer確認所討論的程序集是AjaxControlToolkit。

我試着將AjaxControlToolkit程序集添加到web.config的sharepoint,它坐在GAC中,但無濟於事。

任何人都知道如何在不參考我的「MyWebParts」程序集中存在的每個程序集的情況下做到這一點?

回答

0

的引用程序集添加在web.config組件部分,這將迫使共享點到集加載到內存中,像這樣:

<assemblies> 
    <add assembly="AjaxControlToolkit, Version=1.0.10920.16768, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/> 
</assemblies> 

附:這是針對ajax 1.0的,如果您使用的是AJAX 3.5版本,請更正程序集版本。

+0

我試過了,但沒有奏效。 (當我說「我嘗試將AjaxControlToolkit程序集添加到web.config中時,這就是我的意思......」)。還是)感謝你的建議。 – 2009-10-28 13:02:03

+0

是否有版本差異?因爲我以前做的事情是在我自己的visual studio項目中包含ajaxcontroltoolkit項目。似乎ajaxcontroltoolkit項目每次創建它時都會更新它自己的版本號(所以它會在測試中生成/運行,因爲您始終引用最新版本),但是如果部署了它,可能是您的項目引用了新版本,而舊版本的ajaxcontroltoolkit位於GAC中。 – Colin 2009-10-28 13:32:15