这是正常的,对于由遗留程序集中的公共类型公开的任何框架类,都将看到.NET 2.0程序集引用。例如,使用以下代码在VS2008中编译的类库项目:
using System;
using System.Text;
public class Class1 {
public static void Run(out StringBuilder sb) {
sb = new StringBuilder();
}
}
并在针对4.0的VS2010控制台模式应用程序中使用:
using System;
using System.Text;
class Program {
static void Main(string[] args) {
StringBuilder sb;
Class1.Run(out sb);
}
}
在其清单中生成程序集引用,如下所示:
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern ClassLibrary3
{
.ver 1:0:0:0
}
.assembly extern mscorlib as mscorlib_2
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
当然,这可能会破坏仅在.NET程序集的v2.0-v3.5sp1版本中测试过的代码的行为。我还没有听说过一个案子。