升级到VS 2012后,.net Entity Framework T4模板无法构建/工作

时间:2012-11-14 10:12:01

标签: entity-framework build visual-studio-2012 t4

安装Vs 2012后,我首先尝试添加实体模型数据库。 怎么T4模板不会构建。

我在尝试调试时遇到这些错误。

  

错误1 - 加载程序集时出现问题   ' C:\的Windows \ Microsoft.Net \组件\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中'   抛出以下异常:System.BadImageFormatException:   无法加载文件或程序集   '文件:/// C:\的Windows \ Microsoft.Net \组件\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中'   或其中一个依赖项。尝试加载程序   格式不正确。文件名:   '文件:/// C:\的Windows \ Microsoft.Net \组件\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中'   在System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,   String codeBase,Evidence assemblySecurity,RuntimeAssembly   locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,   Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)at   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)at   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,Boolean throwOnFileNotFound,Boolean   forIntrospection,Boolean suppressSecurityChecks)at   System.Reflection.RuntimeAssembly.InternalLoadFrom(字符串   assemblyFile,Evidence securityEvidence,Byte [] hashValue,   AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection,Boolean   suppressSecurityChecks,StackCrawlMark& stackMark)at   System.Reflection.Assembly.LoadFrom(String assemblyFile)at   Microsoft.VisualStudio.TextTemplating.TransformationRunner.AttemptAssemblyLoad(字符串   的AssemblyName)

     

===预绑定状态信息=== LOG:User = MANNVIT \ Ole LOG:Where-ref bind。位置=   C:\ WINDOWS \ Microsoft.Net \装配\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中   日志:Appbase = file:/// C:/ Program Files(x86)/ Microsoft Visual Studio   11.0 / Common7 / IDE / LOG:初始PrivatePath = NULL调用程序集:(未知)。   ===日志:此绑定在LoadFrom加载上下文中启动。警告:不会在LoadFrom上下文中探测本机映像。原生图像只会是   在默认加载上下文中进行探测,与Assembly.Load()一样。日志:没有   找到应用配置文件。日志:使用主机配置   file:LOG:使用来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。   日志:尝试下载新网址   文件:/// C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll。   错误:无法完成程序集的设置(hr = 0x8007000b)。探测   终止。

     

警告2编译转换:预定义类型   ' System.Runtime.CompilerServices.ExtensionAttribute'定义于   全局别名中的多个程序集;使用定义   ' C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscorlib.dll中' C:\ Users \用户的Ole \文档\ Visual   studio 11 \ Projects \ Cantina \ Cantina \ Models \ navision.Context.tt

     

错误3编译转换:类型或命名空间名称' CSharp'   在命名空间中不存在' Microsoft' (你错过了吗?   程序集引用?)c:\ Users \ Ole \ AppData \ Local \ Temp \ qiu0vq02.0.cs

     

错误4编译转换:类型或命名空间名称   ' CSharpCodeProvider'无法找到(你错过了使用   指令或程序集引用?)c:\ Program Files(x86)\ Microsoft   Visual Studio 11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework   Tools \ Templates \ Includes \ EF.Utility.CS.ttinclude 37 22

     

错误5编译转换:类型或命名空间名称   ' CompilerErrorCollection'在命名空间中不存在   ' System.CodeDom.Compiler' (你错过了一个集会吗?   参考?)c:\ Program Files(x86)\ Microsoft Visual Studio   11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ Templates \ Includes \ EF.Utility.CS.ttinclude

我认为问题在于它试图使用32位和64位dll的混合。

加载64位mscorlib.dll和32位system.data.dll。 (但我不确定)

我的构建配置器平台是任何CPU。

尝试将<PlatformTarget>x64</PlatformTarget>放入我的C#项目文件中,但这没有帮助。

我使用的是64位win 7 pc。我还安装了vs 2010。

我已完成以下操作,已安装vs 2012教授。 rtm,卸载vs 2012终极rc。

在此之后我注意到了错误。

然后我尝试卸载所有.net框架和vs 2012 rtm。并再次安装vs 2012 rtm,但它仍然给我错误。

有人可以。帮助我解决了什么问题。

3 个答案:

答案 0 :(得分:0)

我错误地将构建配置设置为x64,并得到了相同的错误。当我把它放到任何CPU时,错误就消失了。当我把它放回到x64时,它仍然可以正常运行。所以我不知道为什么,但更改构建配置并将其更改回来修复它!

答案 1 :(得分:0)

确保T4文件末尾有换行符。

由于我们的版本控制系统的换行设置发生了变化,我最近看到了同样的错误。看起来文本模板末尾缺少换行符会导致编译模板代码中缺少结束括号 - 这会导致级联编译失败,并以此错误结束。

答案 2 :(得分:0)

尝试以管理员身份运行Visual Studio(&#34;以管理员身份运行&#34;在上下文菜单中)。