【问题标题】:.net Entity Framework T4 template does not build/work after upgrade to VS 2012.net Entity Framework T4 模板在升级到 VS 2012 后无法构建/工作
【发布时间】:2012-11-02 19:53:11
【问题描述】:

安装 Vs 2012 后,我尝试先添加一个实体模型数据库。 T4 模板如何无法构建。

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

错误 1 ​​- 加载程序集时出现问题 'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll' 引发以下异常:System.BadImageFormatException: 无法加载文件或程序集 'file:///C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll' 或其依赖项之一。试图加载一个程序 格式不正确。文件名: 'file:///C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll' 在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名, 字符串 codeBase、证据 assemblySecurity、RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查)在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查)在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly, StackCrawlMark& stackMark,布尔 throwOnFileNotFound,布尔 forIntrospection, Boolean suppressSecurityChecks) 在 System.Reflection.RuntimeAssembly.InternalLoadFrom(字符串 assemblyFile,证据 securityEvidence,Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean for Introspection, Boolean suppressSecurityChecks、StackCrawlMark 和 stackMark)在 System.Reflection.Assembly.LoadFrom(String assemblyFile) 在 Microsoft.VisualStudio.TextTemplating.TransformationRunner.AttemptAssemblyLoad(字符串 组件名称)

=== 预绑定状态信息 === LOG: User = MANNVIT\Ole LOG: Where-ref 绑定。位置 = C:\Windows\Microsoft.Net\assembly\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 调用程序集:(未知)。 === LOG:此绑定在 LoadFrom 加载上下文中开始。警告:将不会在 LoadFrom 上下文中探测本机图像。本机图像只会 在默认加载上下文中进行探测,例如使用 Assembly.Load()。日志:没有 找到应用程序配置文件。 LOG:使用主机配置 文件:LOG:使用来自的机器配置文件 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config。 日志:尝试下载新 URL file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll。 ERR:无法完成程序集的设置(hr = 0x8007000b)。探测 终止。

警告 2 编译转换:预定义类型 'System.Runtime.CompilerServices.ExtensionAttribute' 定义在 全局别名中的多个程序集;使用来自的定义 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll' C:\Users\Ole\documents\visual 工作室 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 工具\模板\包含\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。

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

我使用的是 64 位 win 7 电脑。我也安装了 vs 2010。

我已经完成了以下操作,安装了 vs 2012 prof。 rtm,已卸载 vs 2012 Ultimate rc。

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

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

有人可以请。帮我解决问题。

【问题讨论】:

  • 您能否添加有关您的环境的更多信息。您是否同时安装了 VS 2010 和 VS 2012?你在安装 VS 2012 之前/之后卸载了 VS 2010 吗?
  • 我已经更新了我的帖子,提供了有关我的环境的更多信息
  • 我的公司也有同样的问题。我们并排安装了 2010 和 2012 VStudio Ultimate。先安装2010。在我们的例子中,我们安装了 Windows 8。
  • 这个问题仍然困扰着我,有没有人有解决这个问题的建议?...我已经更新了 vs 2012 以更新 1,但我仍然收到错误。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      尝试以管理员身份运行 Visual Studio(上下文菜单中的“以管理员身份运行”)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-12
        • 1970-01-01
        相关资源
        最近更新 更多