为什么编译器说我需要添加对System的第2版的引用,当它已经存在?

时间:2013-10-01 22:19:11

标签: .net visual-studio-2008 system windows-ce assembly-references

我正在将Windows CE / CF解决方案(exe和类库/ DLL)从Visual Studio 2003 / .NET 1.1移植到Visual Studio 2008 / .NET 3.5

这里的最后一行代码:

private bool ConnectToServer( ref Util.thisEnv tEnv )
{
bool bRet = false;

Util.CloseAll();
do
{
    Thread.Sleep( 100 );
} while( Util.dW_Running );

try
{
    tEnv.siteNumber      = siteNumber;
    tEnv.opFlag          = 0;
    tEnv.pptStream       = null;

...抛出编译时错误,即:

类型'System.Net.Sockets.NetworkStream'在未引用的程序集中定义。您必须添加对程序集'System,Version = 2.0.0.0

的引用

但我在此项目中引用该版本的系统程序集。

运行时版本和版本都是2.0.0.0 路径是C:\ Program Files(x86)\ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE \ System.dll

其他项目(类库/ DLL)也引用了System,稍有不同,运行时版本是v2.0.50727,Path是C:\ Windows \ Microsoft.NET \框架\ V2.0.50727 \ System.dll中

“cousing”项目之间系统程序集的不匹配是否是此问题的根源?它似乎不是这样,但我不知道为什么这个看似错误的错误正在出现...... ???

1 个答案:

答案 0 :(得分:1)

这不仅仅是一个“轻微”的差异。一个参考是Compact Framework参考,另一个是桌面参考。必须删除对“C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.dll”的引用,否则它将尝试将完整框架推送到您的设备并赢得“无论如何都要跑。