.net - 将 dll 部署到 GAC

标签 .net sharepoint dll gac

我们有一个 Sharepoint 2010 解决方案,正在尝试部署到生产环境。

我们使用 Visual Studio 2010 开发了这个解决方案,并且我们创建了几个项目,这些项目产生了许多 dll。

访问其中一个 Web 部件时出现以下错误。

An error occurred during the compilation of the requested file, or one of its dependencies. The type 'xxxx' is defined in an assembly that is not referenced. You must add a reference to assembly '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.AssemblyBuilder.Compile() 在 System.Web.Compilation.BuildProvidersCompiler.PerformBuild() 在 System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) 在 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath) virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildI... a47a805d-765d-429e-b080-fe031b3e4fac

谢谢,

约瑟夫

最佳答案

您应该使用 Visual Studio 2010 为您的 SharePoint 2010 解决方案创建 WSP 包。您可以将引用的程序集作为主包的一部分。为此,请双击 SharePoint 项目中的包,然后转到高级选项卡。从这里您将能够将外部程序集包含到您的 WSP 中,或者自动将其他项目的输出包含在您的解决方案中。

如果您引用的程序集可能由多个 WSP 解决方案共享,请注意以下特殊警告:当 WSP 被收回时,WSP 中包含的所有程序集也会被收回,而不管另一个 WSP 是否也包含该程序集.

对于共享程序集,我推荐的最佳做法是创建一个独立的 WSP 解决方案,它只包含程序集。创建一个新的空 SharePoint 项目。单击解决方案资源管理器中的项目,然后使用 F4 查看属性 Pane 。将“在包中包含程序集”设置为 false,将“程序集部署目标”设置为 GlobalAssemblyCache。然后双击包,并转到高级选项卡以添加您的程序集引用。

您最终会使用多个 WSP 来部署您的解决方案,但这有助于以可靠的方式处理依赖关系。

您永远不应该使用手动将程序集添加到 GAC 作为您的生产部署方法!!

关于.net - 将 dll 部署到 GAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238433/

相关文章:

c++ - 如何配置 VS 2010 来创建一个利用其他 DLL 的 DLL

c# - 仅通过一个字段从对象列表中查找不同的值

java - 使用 JAVA Sharepoint 批量上传

c# - 在 SharePoint 中以编程方式检查列属于哪个字段类型

sharepoint - 将 ListItem 添加到 Sharepoint 2007 中的列表

java - Windows下JVM如何绘制按钮等控件?

dll - 如何拦截 VB6 ActiveX DLL 中的 DLL 加载/卸载事件?

c# - Entity Framework Code First Auditing 多对多和一对多问题

.net - UdpClient.CancelReceive 在哪里?

c# - 在属性中公开 IEnumerable 是否安全?