【问题标题】:Ajax Control Toolkit Compile error ASP.NETAjax Control Toolkit 编译错误 ASP.NET
【发布时间】:2013-12-18 12:16:19
【问题描述】:

我从 nuget 添加了 AjaxControlToolkit 版本 7.1213,我有 .net 4.5 的 vs 2012 我尝试像这样在我的网站中使用calenderextender

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<asp:TextBox ID="birthtxt" runat="server" Style="width: 95%;" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"></ajaxToolkit:CalendarExtender>

在尝试调试项目时出现以下错误:

Error   1   The type 'System.Web.UI.ScriptManager' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.


Error   2   The type 'System.Web.UI.ExtenderControl' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

这是我的Web.config的程序集

<assemblies>
        <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

这是controls in web.config

   <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
      </controls>
    </pages>

目标框架是 3.5 有什么想法???

【问题讨论】:

  • 您是否已将 ajax 控件 dll 添加到您的 bin 文件夹中?

标签: c# asp.net web-config ajaxcontroltoolkit calendarextender


【解决方案1】:

感谢大家的帮助。通过在web.config 中添加类似这样的属性targetframework 的编译标记来解决问题

<compilation debug="true" targetFramework="4.5">

【讨论】:

    【解决方案2】:

    看起来您还没有将 AjaxControlToolkit 程序集添加到“程序集”部分。您可以尝试添加它然后重新测试吗?

    编辑:要获取 PublicKeyToken,请打开 Visual Studio 命令提示符,cd 到 DLL 所在的目录,然后发出以下命令:

    sn -Tp AjaxControlToolkit.dll
    

    【讨论】:

    • 如何获取公钥令牌??
    • 我试过了,得到了这个 Microsoft (R) .NET Framework 强名称实用程序版本 4.0.30319.17929 版权所有 (c) Microsoft Corporation。版权所有。无法将密钥转换为令牌 -- 程序集公钥无效。
    • 你使用大写 T 的 Tp 吗?该标志区分大小写,因此如果您使用小写 t,您将遇到此问题。
    • 我做了你说的所有事情,并在重新测试时得到了这个以下程序集依赖于高于目标的 .NET Framework 版本,并且在运行时可能无法正确加载导致失败:HtmlAgilityPack ,版本=1.4.6.0,文化=中性,PublicKeyToken=bd319b19eaf3b43a。依赖项是:mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089; System.Xml,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089;系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089。
    【解决方案3】:

    如果没有错,这可能是您从 web.config 文件中删除的问题

    <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
    

    并将它放在源页面的顶部,并且不要忘记将标记前缀放在最后,这意味着在命名空间声明之后。

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    

    并在源页面中进行这样的更改,因为 ajaxtoolkit 和 textbox 之间没有连接。为此,您必须使用 'TargetControlID'

    <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="birthtxt">
        </ajaxToolkit:CalendarExtender>
    

    更新

    将您的 webconfig 文件更改为,

    <pages>
    <controls>
    
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions,Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" 
            tagPrefix="ajaxToolkit"/>
    </controls>
    </pages>
    

    【讨论】:

    • 让我知道结果。@FerasSalim
    • 将 TargetControlID 放在 ajaxtoolkit 日历扩展器中,而不是 toolkitscript 管理器中。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多