Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Ну и как ссылаться на либу?

426  
Murr патриот10.12.19 13:56
Murr
NEW 10.12.19 13:56 

Ну и как ссылаться на либу?


Пинаю приложение, которое не без проблем ставится на Вин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 машине либа должна быть загружена с остальными либами - есть и в списке, есть и в деплое. Но тем не менее при запуске ругается на отсутствие либы в ГАЦ,

Аналогичные либы, идущие в комплекте с аппой грузятся без проблем...


Блин, что же Я такое намутил? безум

#1 
Murr патриот10.12.19 14:24
Murr
10.12.19 14:24 
в ответ Murr 10.12.19 13:56

Выкинул обе либы из проекта и потер все референсы.

Сделал папку для лог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>


В общем - Я слегка офигиваю...

#2 
Murr патриот10.12.19 16:28
Murr
NEW 10.12.19 16:28 
в ответ Murr 10.12.19 14:24

Смешно - с любой из либ инсталлится и запускается тестовая задачка...

Значит надо курочить проекты и редактировать ссылки...

#3 
AlexNek патриот10.12.19 19:15
AlexNek
NEW 10.12.19 19:15 
в ответ Murr 10.12.19 14:24

Нифига не понимаю, что ты там накурочил.

Я себе сделал отдельный проект 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

#4 
Murr патриот10.12.19 21:36
Murr
NEW 10.12.19 21:36 
в ответ AlexNek 10.12.19 19:15

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...

#5 
AlexNek патриот10.12.19 21:50
AlexNek
NEW 10.12.19 21:50 
в ответ Murr 10.12.19 21:36

А зачем они тебе в Гаке?

А с труе пробовал?


<SpecificVersion>False</SpecificVersion>

#6 
Murr патриот10.12.19 22:33
Murr
NEW 10.12.19 22:33 
в ответ AlexNek 10.12.19 21:50

А зачем они тебе в Гаке?

-----

Эксперементировал когда-то - остались. Если удалить - что-то может завалится...


А с труе пробовал?

-----

Во первых - для меня это вредно.

Во вторых - ты снова не обратил внимания - то, что я привел, прописалось в проекте при ссылке на либу версии 2.0.8.0. Даже если Я поменяю тру/фалсе описание версии не поменяется - будет требовать именно прописанную версию.


Одно радует - после подчисток в проектах инсталлер перестал требовать специфическую 1.2.13.0 версию на клиенте в ГАЦе.

Видимо придется стереть всю условную подгрузку всех либ и дать референсы на проекты и наличные либы...

Блин, как это будет медленно... снова все курочить...

#7 
Murr патриот12.12.19 14:14
Murr
NEW 12.12.19 14:14 
в ответ Murr 10.12.19 22:33

И все же Я ее победил... ручками.


Прописать правильную версию можно двумя способами:

- руками.

- пакаджем.


В первом случае надо смотреть ооочень внимательно - Студии часто наплевать на то что написано в проекте и она вытаскивает информацию откуда ей удобно.

Самая последняя проблема - требует поместить в ГАЦ клиента последнюю (2.0.8.0) версию логгера.

Никакими редакциями проекта, чистками файлов, выгрузками проекта и студии не удалось победить это требование.

Сработал - последний шанс - удалил ссылку на либу, добавил по новой.

В коде проекта осталось тоже самое, но наконец-то заюзалась правильная версия.

Видимо лежало где-то усерских префах или суошке...


#8