ошибка сборки, предупреждение MSB3258

Недавно я перенес свое решение с моей основной машины для разработки, используя vs2010 pro sp1, на новую машину. Предполагается, что установка будет такой же, за исключением того, что ее не удастся построить.

Это дает ошибки, такие как

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): предупреждение MSB3258: основная ссылка "C:\rep\hms\trunk\ikassystemv3\ikasDAL\bin\Debug\ ikasDAL.dll» не удалось разрешить, так как он косвенно зависит от сборки .NET Framework «mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089», которая имеет более высокую версию «4.0.0.0», чем версия «2.0.0.0» в текущей целевой структуре.

Однако все рассматриваемые библиотеки настроены на использование платформы .net 2, и мне это нужно, иначе это сломает материал, который их использует.

Однако по какой-то причине кажется, что мои системные библиотеки .net 2 каким-то образом ссылаются на материалы .net 4. Все упомянутые библиотеки являются .net 2

Вы можете увидеть результат моей сборки здесь

http://tinyurl.com/bnugru4


person Steed    schedule 12.11.2012    source источник
comment
Что-то связанное с ikasDAL.dll   -  person codingbiz    schedule 13.11.2012
comment
Является ли ikasDAL одним из ваших проектов? На что ссылается?   -  person D Stanley    schedule 13.11.2012


Ответы (2)


Я видел эту проблему при использовании ссылки на проект CopyLocal и изменении целевой платформы (например, .NET 4 на 2) в зависимом проекте (например, ikasDAL.dll).

Если это так, удаление выходной папки (например, C:\rep\hms\trunk\ikassystemv3\ikasDAL\bin\Debug) и перестроение должны все исправить.

person Christoffer    schedule 12.11.2012
comment
Спасибо за эту информацию, хоть она и не помогла напрямую, но привела меня в правильном направлении. Оказалось, что моя библиотека класса DAL ссылалась на mysql.data.dll. По какой-то причине, установив для CopyLocal значение true для библиотеки mysql, все проблемы исчезли. - person Steed; 13.11.2012
comment
Вероятно, это произошло потому, что вы установили целевую версию mysql.data.dll для .NET 4 в глобальный кэш сборки вашего компьютера (только). CopyLocal заставил ваш процесс сборки использовать правильный в вашей папке bin. - person abto; 21.10.2013

Судя по журналам, похоже, что кто-то написал ikasDAL.dll в версии 4.0, потому что она зависит от таких вещей, как System.Xml.Linq и т. д., которых не было в среде 2.0.

Судя по всему, я бы сказал, что кто-то искусственно установил для ikasDAL.dll версию 2.0, не понимая, от чего это зависит. Если это так, то я думаю, что у вас есть большая проблема.

В качестве альтернативы, ikasDAL недавно был установлен на 4.0, и вы сбросили его обратно на 2.0, но не исправили его зависимости.


Я бы начал с ручной очистки всех каталогов bin (в основном удалял их). Затем я просматривал каждый отдельный проект, чтобы убедиться, что он действительно установлен на 2.0. Наконец, я собирал каждый проект по одному, пока не сталкивался с проблемой.

person NotMe    schedule 12.11.2012