我有一个项目,我正在迁移到使用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() %>' />
其中TimestampToString是一个如下所示的扩展方法:
<Extension()> _
Public Function TimestampToString(ByVal binary As Binary) As String
Return BitConverter.ToUInt64(binary.ToArray(), 0).ToString()
End Function
有没有人见过这种行为并知道修复它?
答案 0 :(得分: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>
答案 1 :(得分:0)
发生这种情况与项目中的代码模块有关。解决问题的是关闭解决方案并重新打开它。我一直在调试已升级的ASPX项目,并消除了所有错误,只是最后出现了这个问题。