【问题标题】:Errors/warning after converting VS 2008 (c#) solution to VS 2010将 VS 2008 (c#) 解决方案转换为 VS 2010 后的错误/警告
【发布时间】:2011-08-26 19:28:22
【问题描述】:

我们有一个包含 58 个项目的 Visual Studio 2008 解决方案。一个项目以 3.5 运行时为目标,而另一个 57 以 3.0 为目标。该解决方案在 Visual Studio 2008 中构建良好。我在 Visual Studio 2010 中打开该解决方案并继续执行升级项目向导。出现提示时,我拒绝以 4.0 运行时为目标,并坚持使用当前选择的运行时。转换完成,没有错误。

在尝试构建时,我收到大量以下两个警告:

“无法解析主要引用 [AssemblyX],因为它间接依赖于 .NET Framework 程序集 ”CrystalDecisions.Enterprise.Framework, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304” 比当前目标框架中的版本“10.5.3700.0”高版本“11.5.3300.0”。

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets"

“无法解析主要引用 [AssemblyY],因为它间接依赖于 .NET Framework 程序集 ”mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”版本“4.0.0.0”比当前目标框架中的版本“2.0.0.0”。

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets"

我查看了发生此错误的程序集的清单:

// Metadata version: v4.0.30319
.assembly extern System.Web
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 2:0:0:0
}
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0  //***********Why is this targeting the 4.0?
}
.assembly extern System.Xml
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern [SomeAssembly1]
{
  .ver 1:0:0:0
}
.assembly extern [SomeAssembly2]
{
  .publickeytoken = (A7 E6 CA C5 42 3F 9E A9 )                         // ....B?..
  .ver 3:1:30307:0
}
.assembly extern [SomeAssembly3]
{
  .publickeytoken = (A7 E6 CA C5 42 3F 9E A9 )                         // ....B?..
  .ver 3:1:30307:0
}
.assembly extern mscorlib as mscorlib_6
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern System
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern Relo.Profile.Client
{
  .ver 1:0:0:0
}
.assembly extern PRERS.Logging
{
  .publickeytoken = (A7 E6 CA C5 42 3F 9E A9 )                         // ....B?..
  .ver 3:1:30307:0
}
.assembly extern Microsoft.Practices.EnterpriseLibrary.Logging
{
  .publickeytoken = (74 B5 57 D6 49 41 67 26 )                         // t.W.IAg&
  .ver 3:1:0:0
}

我查看了 SomeAssembly1、SomeAssembly2、SomeAssembly3(以及整个解决方案)的引用,但找不到任何针对 4.0 的内容。

我在互联网上搜索了解决方案/讨论,但我发现的解决方法似乎都不适合我。

http://social.msdn.microsoft.com/Forums/en/msbuild/thread/516647ee-dccf-49ee-959a-00b1fc098eeb

http://connect.microsoft.com/VisualStudio/feedback/details/571860/assemblies-targetting-net-3-5-will-not-load-in-applications-also-targetting-net-3-5

http://arstechnica.com/civis/viewtopic.php?f=20&t=1112439

http://connect.microsoft.com/VisualStudio/feedback/details/510467/migrated-project-cant-compile-the-commandline-for-resgen-task-is-to-long

非常感谢任何帮助。谢谢!

【问题讨论】:

  • 您使用的机器上是否安装了3.0和3.5框架版本?
  • 是的,它们都已安装,正如我所说,该解决方案在 Visual Studio 2008 下编译良好。

标签: c# .net visual-studio visual-studio-2010 msbuild


【解决方案1】:
【解决方案2】:

58 个项目很多!我要尝试的第一件事就是从解决方案中删除其中一些。知道您在引用您取出的错误时会遇到其他错误,但如果该错误消失/保留,那么您就会更好地了解哪个是您的问题孩子。

另一种方法可能是创建一个新的 VS2010 解决方案,然后一个接一个地添加项目。 58个项目让你痛,我心疼你!

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 2012-10-22
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多