缺少类型,但似乎真的是版本不匹配

时间:2011-06-21 01:06:59

标签: .net reference dllimport dll

编译.NET 4.0应用程序时收到此错误消息:

  

类型'System.Collections.Specialized.INotifyCollectionChanged'在未引用的程序集中定义。您必须添加对程序集'WindowsBase,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用。

当您将System添加到项目引用时,它定义了它所需的类。

似乎在说它需要版本3参考。我不知道该怎么做。

如果有人有想法,我很乐意听到。

作为旁注,我正在使用TFS API和此代码:

// Get the id of the work item that we got from the server (or the work item associated with it)
int workItemId;

// If this is a test run then we need to look up the work item it is running off of
if (notificationEventArgs is TestCaseResultChangedNotification)
{
    TestCaseResultChangedNotification testCaseResultChangedNotification = (notificationEventArgs as TestCaseResultChangedNotification);
    ITestManagementTeamProject testManagementTeamProject = TFSAccess.Instance.TestManagement.GetTeamProject(testCaseResultChangedNotification.ProjectName);
    ITestCaseResult testCaseResult = testManagementTeamProject.TestResults.Find(testCaseResultChangedNotification.TestCaseResultIdentifier.TestRunId, testCaseResultChangedNotification.TestCaseResultIdentifier.TestResultId);
    workItemId = testCaseResult.TestCaseId;

    foreach (ITestIterationResult testIterationResult in testCaseResult.Iterations)
    {

    }
}

导致问题的是Iterations集合。

2 个答案:

答案 0 :(得分:2)

您是否尝试添加对WindowsBase版本4的引用?它包含[TypeForwardedTo]属性,用于将INotifyCollectionchanged类型重定向到System.dll。这应该照顾它。

答案 1 :(得分:1)

在.NET 3.0中ObservableCollectionWindowsBase程序集中定义。在.NET 4.0中,它在System中定义。似乎TFS API的目标是v3.0 ......

将项目重新定位到早期版本或引用WindowsBase。在第二种情况下,您可能需要使用this article中描述的方法。