对于必须属于项目一部分的Assembly而言,必需参考

ili*_*ian 4 webforms visual-studio-2008 linq-to-sql

我有一个项目,我正在迁移到使用Linq To SQL.总的来说没关系,但我遇到了一个问题,如果我试图将DTO中的时间戳放入隐藏字段,我会在运行时收到此错误:

BC30652:程序集'System.Data.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'包含类型'System.Data.Linq.Binary'所需的引用.在项目中添加一个.

我肯定有一个对程序集的引用,否则代码的其他部分将无法编译.我尝试删除所有引用并删除bin和obj文件夹,但我仍然得到相同的错误.

它发生在标记的这一行:

<asp:HiddenField ID="hfTimestamp" runat="server" 
    Value='<%#CType(Container.DataItem, CommunicationType).pslTimestamp.TimestampToString() %>' />
Run Code Online (Sandbox Code Playgroud)

其中TimestampToString是一个如下所示的扩展方法:

<Extension()> _
Public Function TimestampToString(ByVal binary As Binary) As String

    Return BitConverter.ToUInt64(binary.ToArray(), 0).ToString()

End Function
Run Code Online (Sandbox Code Playgroud)

有没有人见过这种行为并知道修复它?

Gar*_*ary 5

你在不同的集会中分离你的逻辑吗?如果是这样,那么您也必须在Web应用程序中引用它.您可以将其添加到web.config

 <compilation debug="true">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
  </assemblies>
</compilation>
Run Code Online (Sandbox Code Playgroud)