У меня была точно такая же проблема; VS2010. У меня была ссылка на WindowsBase.dll, но я все еще получил ошибку. У меня есть проект C # в том же решении, которое использует ObservableCollection, и он прекрасно компилируется. В конце концов я понял, что это связано с тем, что я установил целевую платформу .NET на V3.5 (проект MMC, а MMC пока не поддерживает .NET 4.0). Я настроил проект C # на использование «.NET V3.5 Client», но управляемый проект C ++ был просто установлен на «.NET V3.5». Похоже, что определение ObservableCollection можно найти в «клиентской» версии WindowsBase.dll, но не в обычной версии.
С другой стороны, файл .csproj содержал следующую строку, а файл .vcproj - нет.
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
Когда указан «Клиент», DLL появляется из:
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client
Когда «Клиент» не указан, DLL появляется из:
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0
Добавление тега «TargetFrameworkProfile» в .vcproj вынудило компилятор использовать клиентскую версию WindowsBase.dll, и тогда компиляция завершится успешно. Я не могу объяснить, почему, но я рад, что оставил позади себя этот скребок для головы.