Ну и как ссылаться на либу?
Ну и как ссылаться на либу?
Пинаю приложение, которое не без проблем ставится на Вин7 и падает на Вин10.
Текущее подозрение - неправильная версия log4net.
Аккуратно слил последнюю версию с гоогловского сайта.
Взял как соурсники, так и оба (они подпись меняли) варианта готовых либ.
Точно знаю, что либы версии 2.0.8.
Создал маленький тестовый проект и закинул туда либу. Получилось следующая ссылка:
<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
Предыдущая ссылка выглядит так:
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=AMD64">
Обе предыдущие версии инсталлированы в ГАЦ,,,
При загрузке приложения оно отваливается с руганью на:
Detecting dependent assembly log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669E0DDF0BB1AA2A, processorArchitecture=msil
Еще где-то мелькало требование на 1.2.13.0...
Ну и где же моя 2.0.8?
При запуаске на голой Вин10 машине либа должна быть загружена с остальными либами - есть и в списке, есть и в деплое. Но тем не менее при запуске ругается на отсутствие либы в ГАЦ,
Аналогичные либы, идущие в комплекте с аппой грузятся без проблем...
Блин, что же Я такое намутил?
Выкинул обе либы из проекта и потер все референсы.
Сделал папку для лог4нет и подпапки для каждой версии.
при добавлении либы к проекту дллки получил фигню:
<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"><SpecificVersion>False</SpecificVersion><HintPath>..\log4net\v.1.2.13\log4net.dll</HintPath></Reference>
и
<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"><SpecificVersion>False</SpecificVersion><HintPath>..\log4net\v.2.0.8\log4net.dll</HintPath></Reference>
при этом в свойствах ссылки указывается правильная версия - 1.2.13.0 и 2.0.8.0
При добавлении ссылки на ту же либу, но для аппы получил
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=AMD64"><SpecificVersion>False</SpecificVersion><HintPath>..\log4net\v.1.2.13\log4net.dll</HintPath></Reference>
В общем - Я слегка офигиваю...
Нифига не понимаю, что ты там накурочил.
Я себе сделал отдельный проект Alex.Log и только там есть ссылка на либу
<ItemGroup> <Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> <HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath> </Reference>
Все остальные проекты пользуют ссылку на проект Alex.Log и классы/интерфейсы с одинаковыми именами как у log4net
Version=2.0.8.0 - добавил, Version=2.0.8.0 - прописалась.
Это Я понимаю. Обычно у меня так же. Но не сейчас.
Сейчас Я добавляю нужную либу, а прописывается - другая, которая есть в ГАЦе...
Причем в ГАЦе их две - 1.2.10.0 & 1.2.12.0 - для дллки в МИСЛ будет 12-я, для приложения в МИСЛ - 10-я...
даже если в свойствах будет показываться 2.0.8.0...
Поменял ВСЕ ссылки.
Аппа все одно падает...
Одно хорошо - начала падать и на Вин7... осталось отредактировать 4 проекта - в каком-то из них есть бякa...
А зачем они тебе в Гаке?
-----
Эксперементировал когда-то - остались. Если удалить - что-то может завалится...
А с труе пробовал?
-----
Во первых - для меня это вредно.
Во вторых - ты снова не обратил внимания - то, что я привел, прописалось в проекте при ссылке на либу версии 2.0.8.0. Даже если Я поменяю тру/фалсе описание версии не поменяется - будет требовать именно прописанную версию.
Одно радует - после подчисток в проектах инсталлер перестал требовать специфическую 1.2.13.0 версию на клиенте в ГАЦе.
Видимо придется стереть всю условную подгрузку всех либ и дать референсы на проекты и наличные либы...
Блин, как это будет медленно... снова все курочить...
И все же Я ее победил... ручками.
Прописать правильную версию можно двумя способами:
- руками.
- пакаджем.
В первом случае надо смотреть ооочень внимательно - Студии часто наплевать на то что написано в проекте и она вытаскивает информацию откуда ей удобно.
Самая последняя проблема - требует поместить в ГАЦ клиента последнюю (2.0.8.0) версию логгера.
Никакими редакциями проекта, чистками файлов, выгрузками проекта и студии не удалось победить это требование.
Сработал - последний шанс - удалил ссылку на либу, добавил по новой.
В коде проекта осталось тоже самое, но наконец-то заюзалась правильная версия.
Видимо лежало где-то усерских префах или суошке...