【问题标题】:build error, warning MSB3258构建错误,警告 MSB3258
【发布时间】:2012-11-12 22:15:07
【问题描述】:

我最近将我的解决方案从使用 vs2010 pro sp1 的主要开发机器转移到了新机器上。除了构建失败之外,设置应该是相同的。

它给出的错误像

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9):警告 MSB3258:主要参考“C:\rep\hms\trunk\ikassystemv3\ikasDAL\bin \Debug\ikasDAL.dll" 无法解析,因为它间接依赖于具有更高版本 "4.0.0.0" 的 .NET Framework 程序集 "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"比当前目标框架中的“2.0.0.0”版本。

但是所有有问题的库都设置为使用 .net 2 框架,我需要这种方式,否则它会破坏使用它们的东西。

但由于某种原因,它似乎认为我的 .net 2 系统库以某种方式引用了 .net 4 的东西。所有引用的库都是 .net 2

你可以在这里看到我的构建输出

http://tinyurl.com/bnugru4

【问题讨论】:

  • ikasDAL.dll有关
  • ikasDAL 是您的项目之一吗?它引用了什么?

标签: c# msbuild build-error


【解决方案1】:

我在使用 CopyLocal 项目引用并在依赖项目(即 ikasDAL.dll)上更改目标框架(即 .NET 4 到 2)时看到了这个问题。

如果是这种情况,删除输出文件夹(即 C:\rep\hms\trunk\ikassystemv3\ikasDAL\bin\Debug)并重建应该可以解决整个问题。

【讨论】:

  • 感谢您提供此信息,尽管它没有直接帮助,但它引导我朝着正确的方向前进。原来我的 DAL 类库引用了 mysql.data.dll。出于某种原因,将 mysql lib 的 CopyLocal 设置为 true 使所有问题都消失了。
  • 这可能是因为您在机器的全局程序集缓存中安装了 .NET 4 目标版本的 mysql.data.dll(仅)。 CopyLocal 强制您的构建过程在您的 bin 文件夹中使用正确的。
【解决方案2】:

从日志看来,确实有人在 4.0 中编写了 ikasDAL.dll,因为它依赖于诸如 System.Xml.Linq 之类的东西,而这些东西在 2.0 框架中是不存在的。

从表面上看,我会说有人人为地将 ikasDAL.dll 设置为 2.0,而没有意识到它依赖于什么。如果是这样的话,那我觉得你的问题更大了。

另外,ikasDAL 最近设置为 4.0,您已将其重置回 2.0,但未修复它的依赖项。


我会先手动清理所有 bin 目录(基本上是删除它们)。然后我会查看每个单独的项目以确保它确实设置为 2.0。最后,我会一次构建每个项目,直到遇到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多