2013-03-13 6 views
2

Я сегодня попытался использовать Windows 8 и визуальную студию 2010 для нашего большого проекта. Я получаю сообщение об ошибке из некоторых проектов, в которых указывается сборка System.Management, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a не может быть разрешена ", потому что она не была предварительно загружена. При использовании API ReflectionOnly зависимые сборки должны быть предварительно загружается или загружается по требованию через событие ReflectionOnlyAssemblyResolve ». Ошибка возникает во время компиляции.Ошибка компиляции Windows 8 Visual Studio 2010

Мы прямо не ссылаемся на эту сборку в нашем проекте. Похоже, что, возможно, Microsoft Enterprise Library (версия 5.0.414) использует эту сборку. Но почему его там нет? Я думал, что это часть .NET Framework.

TargetFramework проекта является .NET 4.0

Что я могу сделать, чтобы решить эту проблему?

+0

[System.Management] (http://msdn.microsoft.com/en-us/library/system.management (v = vs.100) .aspx), безусловно, является частью .NET Framework. Произошла ли ошибка, если вы добавили ссылку на нее в том, что проект дает сообщение об ошибке? – Malice

+0

Можете ли вы удалить его и попробовать и повторно добавить его? Может потребоваться новая версия, но сообщите нам, если это сработает. –

ответ

2

Это, без сомнения, проблема, вызванная Assembly.ReflectionOnlyLoad(), не применяющая политику привязки. Это предотвращает сопоставление 2.0.0.0 версии System.Management.dll с версией 4.0.0.0.

Вы можете попробовать взломать собственный обработчик событий AppDomain.ReflectionOnlyAssemblyResolve, но это не так. Вам лучше воспользоваться ярлыком для этой проблемы, вы скоро все равно. Войдите в панель управления, программу и функции, включите или отключите функции Windows. Отметьте параметр «.NET Framework 3.5», ОК и пусть он катится какое-то время.

+0

Установка .NET 3.5, как вы предлагаете решить проблему. – SACO

0

На моем Win8/VS 2012 машины с проектом, ориентированном .NET FX 4, я только предлагается System.Management v4.0.0.0:

System.Management version on Windows 8

Я предполагаю, что ваш проект был первоначально построен для .NET 2/3/3.5, следовательно, ссылка на System.Management v2.0.0.

Я также предполагаю, что ваш код использует некоторую форму ленивой загрузкой и/или/Инверсия из-под контроля контейнера-Injection Dependency (например Ninject/Виндзор/Autofac/Unity/StructureMap/и т.д.), и что у вас есть жестко закодированная строка где-то в вашем источнике, которая содержит ссылку на библиотеку v2?

Если это так, вам необходимо обновить ссылку на System.Management v4.0.0.0 при создании для .NET 4.0+.

Смежные вопросы