не удается запустить проект dotnet на c #: файл сборки не найден

#c# #.net #linux #.net-assembly

#c# #.net #linux #.net-сборка

Вопрос:

Я пытаюсь запустить проект dotnet под управлением Debian 9.9 (stretch).

Я клонировал репозиторий отсюда: https://github.com/Montesuma80/3cx-web-API

После установки пакетов dotnet (3.1 SDK из репозитория Microsoft) сборка завершилась неудачно, так как не была найдена указанная зависимость. Я отредактировал файл .csproj, чтобы он соответствовал фактическому расположению файла dll в моей системе в теге HintPath (это локально установленная телефонная система):

   <ItemGroup>
    <Reference Include="3cxpscomcpp2">
      <HintPath>/usr/lib/3cxpbx/3cxpscomcpp2.dll</HintPath>
      <Private>false</Private>
    </Reference>
  </ItemGroup>
 

После этого изменения код успешно скомпилирован.

Но при запуске скомпилированного кода я получаю следующую ошибку:

 System.IO.FileNotFoundException: Could not load file or assembly '3cxpscomcpp2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=53c4927ce4749cb4'. The system cannot find the file specified.

File name: '3cxpscomcpp2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=53c4927ce4749cb4'
   at WebAPI.Program.Bootstrap(String[] args)
   at WebAPI.Program.Main(String[] args) in /root/webapi/3cx-web-API/Program.cs:line 418

 

Файл существует по указанному пути. Я попытался удалить папки bin и obj и начать все сначала при копировании dll в каталог проекта, тот же результат. Сборка работает нормально, но при запуске не удается найти сборку. Я проверил версию dll-файла в моей системе, 2.0.0.0 — правильная версия.

Я был бы очень признателен за любую помощь.

Комментарии:

1. Удалить <Private>False</Private> — когда он установлен — dll не копируется в bin папку

2. Как упоминал Likq quercus, убедитесь, что файл действительно находится в вашем выходном каталоге (bin / debug), и если это не сработает, попробуйте добавить <SpecificVersion>False</SpecificVersion> в ссылку (просто для проверки для меня). В visual studio `<Private>false</ Private>` будет отображаться как ‘copy local = false’, поэтому файл, скорее всего, не копируется.

3. @Quercus спасибо, ваша подсказка решила проблему. Можете ли вы опубликовать его в качестве ответа, чтобы я мог отдать вам должное? 😉

Ответ №1:

Удалить

 <Private>False</Private>
 

От Reference
Когда он установлен — dll не копируется в папку bin