我有一个项目正在迁移到使用 Linq To SQL。总的来说,这很好,但我遇到了一个问题,如果我尝试将 DTO 中的时间戳放入隐藏字段,我会在运行时收到此错误:
BC30652: Reference required to assembly 'System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' containing the type 'System.Data.Linq.Binary'. Add one to your project.
我肯定有对程序集的引用,否则代码的其他部分将无法编译。我尝试删除所有引用并删除 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
有没有人见过这种行为并知道解决方法?
最佳答案
你在不同的程序集中分离你的逻辑吗?如果是这样,那么您还必须在 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>
关于visual-studio-2008 - 绝对是项目一部分的程序集所需的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1555500/