编译.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集合。
答案 0 :(得分:2)
您是否尝试添加对WindowsBase版本4的引用?它包含[TypeForwardedTo]属性,用于将INotifyCollectionchanged类型重定向到System.dll。这应该照顾它。
答案 1 :(得分:1)
在.NET 3.0中ObservableCollection
在WindowsBase
程序集中定义。在.NET 4.0中,它在System
中定义。似乎TFS API的目标是v3.0 ......
将项目重新定位到早期版本或引用WindowsBase。在第二种情况下,您可能需要使用this article中描述的方法。