gpt4 book ai didi

c# - System.ComponentModel.DataAnnotations.Schema 命名空间冲突

转载 作者:行者123 更新时间:2023-12-04 16:57:38 25 4
gpt4 key购买 nike

我正在使用 MVC 4、.net 4 和 Entity Framework 6。我的项目正在我的开发机器上构建,该机器安装了 Visual Studio 2010,但在我的构建服务器上我遇到了命名空间冲突...

'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute' 类型同时存在于 'd:\Projects\tools\Apps\LAMS\packages\EntityFramework.6.0.2\lib\net40\EntityFramework.dll' 和 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll'

我不确定如何解决这个冲突,我不明白为什么我的开发机器上没有收到冲突。

非常感谢

最佳答案

问题
.NET 4.0 真的不应该包含 System.ComponentModel.DataAnnotations.Schema因此,您会遇到引用冲突有点令人困惑,但显然 .NET 4.5 会覆盖 4.0 程序集。
您可以在此 post by Marc Gravell 中找到更多信息其中指出:

fact 1: 4.5 is an in-place over-the-top install on top of 4.0, in the GAC; once you have installed 4.5, 4.0 runs with the 4.5 assemblies

fact 2: if your build server doesn’t have the reference assemblies, it looks in the GAC – so… once you’ve installed 4.5, it will get 4.5 even if you asked (in your project) for 4.0


解决方案
在您的开发机器上,Visual Studio 添加了一个不同的文件夹,用于引用 .NET 4.0 程序集,类似于

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0


您可以将该文件夹复制到您的构建机器上,它应该可以工作,因为在构建面向 4.0 的项目时,MSBuild 将引用这些文件夹。
另一方面,由于您已经在构建机器上卸载了 .NET 4.5,也许只需重新安装 .NET 4.0 也可以。
另见 this Stack Overflow answer .

关于c# - System.ComponentModel.DataAnnotations.Schema 命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com