#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