我升级的应用程序新版本构建失败了。升级是由 .Net Framework 4.0 升级到 4.5 并将 EF 升级到版本 6。
错误信息如下:
Models\Mapping\vw_EmployeesAndJobTitlesMap.cs (47): 类型名称 'DatabaseGeneratedOption' 找不到。该类型已转发到程序集 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'。请考虑添加对该程序集的引用。
在日志中我获得以下信息:
已为默认目标构建 $/SCD4/SCD4.Model/SCD4.Model.csproj.metaproj。 00:00 已为默认目标构建 $/StandardClassLibrary/StandardClassLibrary/StandardClassLibrary/StandardClassLibrary.csproj。 00:01 已为默认目标构建 $/SCD4/SCD4.Model/SCD4.Model.csproj。 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (847):未找到框架“.NETFramework,Version=v4.5”的引用程序集。要解决此问题,请安装此框架版本的 SDK 或 Targeting Pack 或将应用程序的目标重新定向到您已安装有该 SDK 或 Targeting Pack 的框架版本。请注意,程序集将从全局程序集缓存 (GAC) 解析,并将用于替代引用程序集。因此,您的程序集可能无法正确地针对您打算的框架进行定位。 c:\Builds\1\SCD4\SCD4-Test\Sources\MVC4\SCD4\packages\EntityFramework.6.0.2\lib\net45\EntityFramework.dll:对类型“System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption”的引用声称其定义在“c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll”中,但找不到它。 Models\Mapping\vw_EmployeesAndJobTitlesMap.cs(24):找不到类型名称“DatabaseGeneratedOption”。该类型已被转发到程序集“System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。考虑添加对该程序集的引用。当我点击日志中的链接时,似乎是这一行存在问题;
using System.ComponentModel.DataAnnotations.Schema;
EF是版本6。错误消息显示c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll不存在,但当我查看时,它确实存在。
我的日志文件如下;
构建于2014年02月20日14:38:54。项目C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.sln在节点1上(默认目标)。 ValidateSolutionConfiguration:正在构建解决方案配置“Debug|Any CPU”。项目C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.sln (1) 正在构建“C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.csproj.metaproj”(2)在节点1上(默认目标)。 项目C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.csproj.metaproj(2)正在构建“C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.Repository\SCD4.Repository.csproj.metaproj”(3) 在节点1上(默认目标)。 项目C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\SCD4.Repository\SCD4.Repository.csproj.metaproj(3)正在构建“C:\Builds\2\SCD4\SCD4-Test\Sources\StandardClassLibrary\StandardClassLibrary\StandardClassLibrary.csproj”(4) 在节点1上(默认目标)。 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(847,9):警告MSB3644:未找到.NETFramework,Version=v4.5的参考程序集。请安装此框架版本的SDK或Targeting Pack,或将您的应用程序重新定位到您已安装其SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)解析,并将用于代替参考程序集。因此,可能无法正确地将您的程序集针对您打算的框架进行定位。[C:\Builds\2\SCD4\SCD4-Test\Sources\StandardClassLibrary\StandardClassLibrary\StandardClassLibrary.csproj] PrepareForBuild:正在创建目录“obj\Debug\"。 GenerateTargetFrameworkMonikerAttribute:跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件都是根据输入文件更新的。 CoreCompile: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\packages\EntityFramework.6.0.2\lib\net40\EntityFramework.dll" /reference:"C:\Builds\2\SCD4\SCD4-Test\Sources\MVC4\SCD4\packages\EntityFramework.6.0.2\lib\net40\EntityFramework.SqlServer.dll" /reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll /reference:c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll /reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll /reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll /reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll /reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll /reference:C:\Windows\Microsoft.Net\assembly\GAC我该如何解决这个问题?