我最近开始使用 Visual Studio 2010。我已经从旧的 2008 年升级了我的解决方案。在此之后,我尝试运行我的项目,这是一个非常简单的数据库搜索引擎,使用 linq 命令并且它工作正常。然后我切换到 .NET 4,从那以后我就死在水里了。任何 linq 查询都不会执行,也不会引发任何异常。当我在执行 linq 命令时暂停时,它会冻结在 DataContext.GetTable() 方法上。我能想到的只是一些兼容性问题,但我无法弄清楚问题到底是什么。
我的 Linq 命令是典型的“选择 *”:
var query = from mateInfo in context.TableMateInfos
select mateInfo;
我正在使用 SQL Server 2008。我不知道为什么在升级到 .NET 4 后命令执行应该停止工作,特别是因为我仍然能够连接到数据库。当我在 Management Studio 中打开数据库时,SQL 命令(从 TableMateInfo 中选择 *)可以正常工作并返回我想要的数据。有没有人有任何想法,请问埋葬的狗在哪里?
编辑:
我已经通过它的 exe 文件运行了我的应用程序,引发了以下异常:
System.IO.FileLoadException: Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
at System.Signature.GetSignature(SignatureStruct& signature, Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
at System.Signature..ctor(IRuntimeFieldInfo fieldHandle, RuntimeType declaringType)
at System.Reflection.RtFieldInfo.get_FieldType()
at System.Data.Linq.SqlClient.TypeSystem.GetMemberType(MemberInfo mi)
at System.Data.Linq.Mapping.AttributedMetaDataMember..ctor(AttributedMetaType metaType, MemberInfo mi, Int32 ordinal)
at System.Data.Linq.Mapping.AttributedMetaType.InitDataMembers()
at System.Data.Linq.Mapping.AttributedMetaType..ctor(MetaModel model, MetaTable table, Type type, MetaType inheritanceRoot)
at System.Data.Linq.Mapping.AttributedRootType..ctor(AttributedMetaModel model, AttributedMetaTable table, Type type)
at System.Data.Linq.Mapping.AttributedMetaTable..ctor(AttributedMetaModel model, TableAttribute attr, Type rowType)
at System.Data.Linq.Mapping.AttributedMetaModel.GetTableNoLocks(Type rowType)
at System.Data.Linq.Mapping.AttributedMetaModel.GetTable(Type rowType)
at System.Data.Linq.DataContext.GetTable[TEntity]()
我已将具有以下内容的 app.config 文件添加到 exe 文件和所有库所在的相同位置。仍然我得到了上面的错误。
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>