簡體   English   中英

將dll部署到GAC

[英]Deploying dlls to GAC

我們有一個Sharepoint 2010解決方案,我們正在嘗試將其部署到生產環境中。

我們已經使用Visual Studio 2010開發了該解決方案,並且創建了多個項目,這些項目導致大量的dll。

訪問其中一個Web部件時,出現以下錯誤。

編譯請求的文件或其依賴項之一時發生錯誤。 類型“ xxxx”是在未引用的程序集中定義的。 您必須添加對程序集'xxx,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = xxxx'的引用。

對於安裝dll,我將它們拖放到了GAC中。 這是一個好方法嗎? 可能是問題的原因嗎? 也許有更好的方法安裝到GAC中? 還是需要按特定順序安裝它們? 一個沒有依賴的人?

這是來自日志文件的完整錯誤:

System.Web.HttpCompileException:c:\\ Windows \\ Microsoft.NET \\ Framework64 \\ v2.0.50727 \\ Temporary ASP.NET Files \\ root \\ 6f2f2743 \\ 7b5d4663 \\ App_Web_rxpractioncommonwpusercontrol.ascx.12f7e65c.q7c1p6i0.0.cs(134):錯誤CS0012 :類型“ xxxx”在未引用的程序集中定義。 您必須添加對程序集'xxxx,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = fe560f99f37381ef'的引用。 在System.Web.Compilation.BuildProviders.System.Web.Compilation.BuildProvidersCompiler.PerformBuild()在System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)在System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath) virtualPath,布爾值noBuild,布爾值allowCrossApp,布爾值allowBuildI ... a47a805d-765d-429e-b080-fe031b3e4fac

謝謝,

約瑟夫

您應該使用Visual Studio 2010為您的SharePoint 2010解決方案創建WSP程序包。 您可以將引用的程序集包括在主程序包中。 為此,請雙擊SharePoint項目中的“程序包”,然后轉到“高級”選項卡。 從這里,您將可以將外部程序集包含到WSP中,或者自動將解決方案中其他項目的輸出包含在內。

如果要引用可由多個WSP解決方案共享的程序集,請注意以下特殊警告:撤消WSP時,無論另一個WSP是否也包含該程序集,WSP中包含的所有程序集也會被撤消。

對於共享程序集,我建議的最佳實踐是創建一個獨立的WSP解決方案,該程序只包含程序集。 創建一個新的空SharePoint項目。 單擊解決方案資源管理器中的項目,然后使用F4查看屬性窗格。 將“在程序包中包含程序集”設置為false,將“程序集部署目標”設置為GlobalAssemblyCache。 然后雙擊該程序包,然后轉到“高級”選項卡以添加您的程序集引用。

您最終將需要多個WSP來部署解決方案,但這有助於以可靠的方式處理依賴性。

您絕不應使用將裝配體手動添加到GAC作為生產部署方法!!

既然您提到您已經嘗試過從WSP部署程序集,所以我想我將列出另一種可能性作為新答案。 您首先需要確定缺少哪個程序集,然后驗證該程序集是否存在於所有前端的GAC中。 您需要排除參考程序集實際丟失的任何可能性。 如另一個答案中所述,使用融合日志查看器。

接下來,您的Web部件是如何開發的,您確定其Web部件會引發該錯誤嗎? 具體來說,您是否在Web部件中使用任何.ascx標記來引用此“缺失”程序集中的控件? 如果是這樣,您可能需要確保在標記中添加<%@ Assembly Name="" %>指令,以使asp.net編譯器知道在編譯期間引用它。 您可能還需要添加SafeControl條目。

將程序集放入GAC的首選方法是使用應用程序安裝程序:)請注意,您需要提升的特權才能將程序集安裝到GAC。 您也可以使用gacutil。

GAC組裝程序的順序無關緊要。

根據錯誤,您可能缺少必要的程序集-使用FusLogVw或Reflector之類的工具來確定未部署的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM