繁体   English   中英

升级.Net Framework 4.5的应用程序 - 无法获得正确的DataAnnotations程序集

[英]Upgrading application for .Net Framework 4.5 - cannot get correct DataAnnotations assembly

我升级的应用程序的新构建失败了。 升级适用于.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 \\ nett \\ 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'中定义,但无法找到它:c:\\ Builds \\ 1 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ packages \\ EntityFramework.6.0.2 \\ lib \\ nett \\ 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',但无法找到c:\\ Builds \\ 1 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ packages \\ EntityFramework.6.0.2 \\ lib \\ nett \\ EntityFramework.dll:引用类型'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOpt ion'声称它在'c:\\ Windows \\ Microsoft.NET \\ assembly \\ GAC_MSIL \\ System.ComponentModel.DataAnnotations \\ v4.0_4.0.0.0__31bf3856ad364e35 \\ System.ComponentModel.DataAnnotations.dll'中定义,但无法找到c:\\ Builds \\ 1 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ packages \\ EntityFramework.6.0.2 \\ lib \\ nett \\ 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'中定义,但无法找到它:c:\\ Builds \\ 1 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ packages \\ EntityFramework.6.0.2 \\ lib \\ nett \\ 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不存在,但是当我看它确实存在。


我的日志文件看起来像;

Build build 20/02/2014 14:38:54 节点1上的项目“C:\\ Builds \\ 2 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ SCD4.sln”(默认目标)。 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 \\节点1上的SCD4 \\ SCD4.csproj.metaproj“(2)(默认目标)。 项目“C:\\ Builds \\ 2 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ SCD4 \\ SCD4.csproj.metaproj”(2)正在构建“C:\\ Builds \\ 2 \\ SCD4 \\ SCD4 - Test \\ Sources \\节点1上的MVC4 \\ SCD4 \\ SCD4.Repository \\ SCD4.Repository.csproj.metaproj“(3)(默认目标)。 项目“C:\\ Builds \\ 2 \\ SCD4 \\ SCD4 - Test \\ Sources \\ MVC4 \\ SCD4 \\ SCD4.Repository \\ SCD4.Repository.csproj.metaproj”(3)正在构建“C:\\ Builds \\ 2 \\ SCD4 \\ SCD4 - 节点1上的Test \\ Sources \\ StandardClassLibrary \\ StandardClassLibrary \\ StandardClassLibrary.csproj“(4)(默认目标)。 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 / refe rence: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_32 \\ System.Data \\ v4.0_4.0.0.0__b77a5c561934e089 \\ System.Data.dll /reference:C:\\Windows\\Microsoft.Net\\assembly\\GAC_MSIL\\System\\v4.0_4.0.0.0__b77a5c561934e089\\System.dll / reference :C:\\ Windows \\ Microsoft.Net \\ assembly \\ GAC_32 \\ System.Web \\ v4.0_4.0.0.0__b03f5f7f11d50a3a \\ System.Web.dll / reference:“c:\\ Program Files \\ Microsoft ASP.NET \\ ASP.NET MVC 3 \\ Assemblies \\ System.Web.Mvc.dll“/reference:C:\\Windows\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Xml\\v4.0_4.0.0.0__b77a5c561934e089\\System.Xml.dll / reference:C: \\ Windows \\ Microsoft.Net \\ assembly \\ GAC_MSIL \\ System.Xml.Linq \\ v4.0_4.0.0.0__b77a5c561934e089 \\ System.Xml.Linq.dll / debug + / debug:full / filealign:512 / optimize- / out:obj \\ Debug \\ StandardClassLibrary.dll / target:library EmailMessage.cs FileSystem.cs Models \\ JqueryDataTableParamModel.cs SessionObjects.cs StandardConstants.cs Dy namic.cs UserMembership.cs OperationStatus.cs Properties \\ AssemblyInfo.cs RepositoryBase.cs“C:\\ Users \\ TFSBuildAgent \\ AppData \\ Local \\ Temp.NETFramework,Version = v4.5.AssemblyAttributes.cs”


我该如何解决?

您可以通过添加对它提到的DLL的引用来解决此问题。

在Visual Studio(2010/2012/2013)中,右键单击项目的引用,然后选择“添加引用”。

然后选择Assemblies选项卡并导航到System.ComponentModel.DataAnnotations并勾选复选框。 然后选择确定,将添加引用。

只要您还using System.ComponentModel.DataAnnotations;您的项目现在应该正确构建using System.ComponentModel.DataAnnotations; 在你的cs文件中。

在.NET Framework 4.5中,EF注释从EF.dll移动到System.ComponentModel.Annotations程序集。

看起来即使你以.NET Framework 4.5为目标,你仍然可以在某处获得EntityFramework.dll v4.4.0.0的引用。

因此,您的类将使用4.4.0.0程序集中的属性进行编译。

在运行时,正在使用较新的EntityFramework.dll (5.0.0.0),它从System.ComponentModel.DataAnnotations程序EF.dll查找属性 - 由于您具有EF.dll 4.4.0.0中的属性,因此无法找到这些属性,因此它看起来像属性被忽略了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM