dll из nuget не копируется из lib ref в bin exe [RESOLVED]
От: vaa  
Дата: 08.06.22 03:45
Оценка:
Пытаюсь запилить небольшое апи в настольное приложение .net472
https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
Пакет Microsoft.AspNet.WebApi.OwinSelfHost
почему-то из bin библиотеки с вебапи не копирует в bin приложения
файл Microsoft.Owin.Host.HttpListener.dll из пакета.
Можно ли в csproj библиотеки настроить чтобы копировался в bin приложения?

Уточнение.
Проблема действительно существует в старом фрэйворке(в корке норм).

Ошибка Microsoft.Owin.Host.HttpListener не найден указывает, что объект создается через рефлексию,
а следовательно не имеет явной ссылки в коде на библиотеку.
Поэтому то и не копируется, придется мутить build Task-у.

Решение:
тип работы с нугетом не влияет
хоть package.json хоть ref-proj
CopyLocal и
даже совет интернет-гуру
  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

в итоге в библиотеке добавил код:
            try
            {
                Microsoft.Owin.Host.HttpListener.OwinServerFactory.Initialize(null);
            }
            catch { }

компилятор видимо шибко умный, нет явной ссылки из код выкину нафиг.
да nameof не спас, видимо преобразует в константу.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 09.06.2022 3:53 Разраб . Предыдущая версия . Еще …
Отредактировано 09.06.2022 2:30 Разраб . Предыдущая версия .
Re: dll из nuget не копируется из библиотеки в bin приложения
От: jahr  
Дата: 08.06.22 05:52
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>почему-то из bin библиотеки с вебапи не копирует в bin приложения

Не знаю, как это под виндой, но может нужно добавить флаги к publish, типа
dotnet publish --force -p:PublishReadyToRun=true -p:IncludeAllContentForSelfExtract=true --self-contained true -p:PublishSingleFile=true ...
Re[2]: dll из nuget не копируется из библиотеки в bin приложения
От: vaa  
Дата: 08.06.22 06:16
Оценка:
Здравствуйте, jahr, Вы писали:

J>Здравствуйте, vaa, Вы писали:


vaa>>почему-то из bin библиотеки с вебапи не копирует в bin приложения

J>Не знаю, как это под виндой, но может нужно добавить флаги к publish, типа
J>
dotnet publish --force -p:PublishReadyToRun=true -p:IncludeAllContentForSelfExtract=true --self-contained true -p:PublishSingleFile=true ...
J>


к сожалению, у нас full framework, не core.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: dll из nuget не копируется из библиотеки в bin приложения
От: B7_Ruslan  
Дата: 08.06.22 06:46
Оценка:
Оба csproj-проекта являются sdk-проектами? Или настольное приложение — старый проект?
Re: dll из nuget не копируется из библиотеки в bin приложения
От: Doom100500 Израиль  
Дата: 08.06.22 06:53
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Пытаюсь запилить небольшое апи в настольное приложение .net472

vaa>https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
vaa>Пакет Microsoft.AspNet.WebApi.OwinSelfHost
vaa>почему-то из bin библиотеки с вебапи не копирует в bin приложения
vaa>файл Microsoft.Owin.Host.HttpListener.dll из пакета.
vaa>Можно ли в csproj библиотеки настроить чтобы копировался в bin приложения?

Если я всё правильно понял, то нужно поставить Copy Local = true.
На картинке ниже System.Text.Json — это nuget. Раскрываем references в Solution Explorer, правая кнопка мыши -> Properties, и там Copy Local = true:

Спасибо за внимание
Re[2]: dll из nuget не копируется из библиотеки в bin приложения
От: vaa  
Дата: 08.06.22 08:28
Оценка:
Здравствуйте, B7_Ruslan, Вы писали:

B_R>Оба csproj-проекта являются sdk-проектами? Или настольное приложение — старый проект?


И exe и classlib старые 472
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: dll из nuget не копируется из библиотеки в bin приложения
От: vaa  
Дата: 08.06.22 09:44
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>Здравствуйте, vaa, Вы писали:


vaa>>Пытаюсь запилить небольшое апи в настольное приложение .net472

vaa>>https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
vaa>>Пакет Microsoft.AspNet.WebApi.OwinSelfHost
vaa>>почему-то из bin библиотеки с вебапи не копирует в bin приложения
vaa>>файл Microsoft.Owin.Host.HttpListener.dll из пакета.
vaa>>Можно ли в csproj библиотеки настроить чтобы копировался в bin приложения?

D>Если я всё правильно понял, то нужно поставить Copy Local = true.

D>На картинке ниже System.Text.Json — это nuget. Раскрываем references в Solution Explorer, правая кнопка мыши -> Properties, и там Copy Local = true:

vs 2019 вот такая лабуда:
пакеты в csproj

☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: dll из nuget не копируется из библиотеки в bin приложения
От: Doom100500 Израиль  
Дата: 08.06.22 09:48
Оценка:
Здравствуйте, vaa, Вы писали:


D>>Если я всё правильно понял, то нужно поставить Copy Local = true.

D>>На картинке ниже System.Text.Json — это nuget. Раскрываем references в Solution Explorer, правая кнопка мыши -> Properties, и там Copy Local = true:

vaa>vs 2019 вот такая лабуда:

vaa>пакеты в csproj
vaa>Image: nuget-vs19.jpg
vaa>Image: nuget-prop.jpg

А если выделить какой-нибудь пакет, то окно "Свойства" заполняются?
Спасибо за внимание
Re[4]: dll из nuget не копируется из библиотеки в bin приложения
От: vaa  
Дата: 08.06.22 11:38
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>Здравствуйте, vaa, Вы писали:



D>>>Если я всё правильно понял, то нужно поставить Copy Local = true.

D>>>На картинке ниже System.Text.Json — это nuget. Раскрываем references в Solution Explorer, правая кнопка мыши -> Properties, и там Copy Local = true:

vaa>>vs 2019 вот такая лабуда:

vaa>>пакеты в csproj
vaa>>Image: nuget-vs19.jpg
vaa>>Image: nuget-prop.jpg

D>А если выделить какой-нибудь пакет, то окно "Свойства" заполняются?


нет .
Думаю это из-за того что я выбрал пакет-референс вместо packages.config.
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.