В моём проекте есть интересный баг с юнит-тестами, который
проявляется только в .NET 4.5, но не в .NET 4.0.
Здесь находится исходный код, а
здесь — архив с бинарниками.
Шаги, чтобы воспроизвести проблему:
1. Скачайте исходный код и бинарники
2. Скопируйте папку Binary в папку Interop\Main\
3.
Запустите unit тесты из сборки Interop.Core.Tests.NETFX45
Тест
IsAliveAfterCollectionWork должен упасть. Если вы попробуете посмотреть память с помощью профайлера (я использую бесплатный
dotMemory 4.0 EAP с настройками Profile .NET process -> Collection every N-th object: 1, Memory traffic: Collect и Use profiler API), то вы увидете, что массив
MarkedObject[] не собирается сборщиком мусора, хотя
на него нет никаких ссылок.
Моя конфигурация:
- Windows 8.1
- .NET Framework 4.5.1
- Я использую Visual Studio 2012, но 2010 и 2013 тоже установлены