如何将DLL作为SafeContols部署? (请不要手动解决方案)
-
16-10-2019 - |
题
我已经使用了用户控制项目(UI),并且正在使用AJAX扩展工具包。这 dll
项目中引用了Ajax扩展工具包。该项目正在成功编译。
在同一解决方案下的另一个项目是WSPBuilder项目(部署)。当您构建UI项目时,所有控件将复制以部署项目目录 12\TEMPLATE\CONTROLTEMPLATES
和 dll
UI项目也复制到 GAC
文件夹。 (用于复制,正在使用后构建事件)
然后,使用WSPBuilder构建和部署构建部署项目。我收到错误消息:
An error occurred during the processing of . Unknown server tag 'asp:ScriptManager'.
请不要说我要手动修改web.config以添加并标记Ajax扩展名为安全控件。我不会那样做。
有更好的解决方案吗?
PS:我正在使用WSPBuilder,STSDEV和VSEWSS。
编辑
感谢克里斯。问题是:
在这种情况下,我认为您缺少的是Web.config中的其他元素 - AJAX声明。除其他方面,您需要Web.config So .Net中的以下内容知道如何找到ScriptManager类:
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
但是这个问题在我身边有些怪异。我不得不设置 enableSessionState
至 true
的 pages
标签下 system.web
和删除以下内容:
<add name=”Session” type=”System.Web.SessionState.SessionStateModule” />
我认为将ajaxextension.dll放入GAC中可以解决此问题。我避免写一个用于修改web.config的功能。我可以在subest.xml中执行此操作吗?
请建议!
解决方案
您看到的错误似乎与SafeControls条目无关。如果是这样,您会看到一条消息,说“无法添加选定的Web部件。无法显示或导入此页面上的Web零件或Web表单控件。该类型未注册为安全。”
在这种情况下,我认为您缺少的是Web.config中的其他元素 - AJAX声明。 除其他事项, ,您需要Web.config So .Net中的以下内容知道如何找到ScriptManager类:
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
您有几个选择:
- 在流行中使用该功能 SharePoint功能CodePlex项目 这将使Web.config更改
- 编写自己的代码以使用SpwebConfigModification更改Web.config。
Web.config所需更改的全部详细信息是 在Mike Ammerlaan的博客中详细介绍.
无论您采用哪种路线,请检查您使用的Ajax版本,以根据您使用的指南/示例使用。
其他提示
WSPBuilder网站的评论。
做得好!当我部署Ajax和Ajax控制工具包时,添加第三方DLLS效果很好。我创建了一个功能来完成所有Web.config更改,并使用GAC 参考文件夹来包括控制工具包DLL。即使在农场中有多台服务器,也可以很好地工作。那是救生员!
因此,在WSPBuilder项目中包含DLL以将其包含在内,然后创建一个功能来修改Web.config。看 这个帖子 有关使用功能修改Web.config的信息。
首先,您必须添加要部署到VS项目的程序集。例如,您可以创建一个“ libs”文件夹来存储您在团队站点中所需的所有外部组件。
然后,您必须编辑团队网站定义的subtest.xml文件。您可以在项目中的“ PKG”文件夹中找到此文件。请注意,仅当您至少一次部署解决方案时,PKG文件夹才能可用。
好,现在您必须添加一个新的 <Assembly>
儿童元素 <Assemblies>
您的团队定义解决方案的subtest.xml文件中的元素。使用“ deploymentTarget”属性,您可以定义程序集应部署到GAC或Web应用程序的BIN文件夹。
以下示例显示了如何 <Assemblies>
元素看起来好像要在GAC中添加“ TeamSitedEfinition1.dll”,并将“ TestSolution.dll”添加到BIN文件夹中。如果您需要安全控制条目,则也可以添加此。
<Assemblies>
<Assembly Location="TeamSiteDefinition1.dll" DeploymentTarget="GlobalAssemblyCache" />
<Assembly Location="TestSolution.dll" DeploymentTarget="WebApplication">
<SafeControls>
<SafeControl ..... />
</SafeControls>
</Assembly>
</Assemblies>