Использование внешнего .dll в точечном сетевом ядре

У меня есть свой собственный файл .dll, который я использовал для использования с Edge.js в nodejs, сейчас я пытаюсь использовать его с приложением dot net core, но не нашел ни где, ни как получить к нему доступ или определить его,

есть что-то вроде

"files":
{
    "":"MyLibrary.dll"
}

или как

using MyLibraryFile.dll

так что я могу использовать функции в нем?

моя структура файла сборки: MyLibraryFile.dll

namespace MyLibrary
{
    public class Inventory
    {
        public async Task<object> Invoke(object input)
    {
}

и ни using MyLbrary; и не using MyLbraryFile; работал

Мне нужно использовать это с редактором кода MS, а не с MS Studio. и не хочу использовать NuGet package

Ответ 1

.Net Core 2 поддерживает прямую ссылку на внешние .dll (например, библиотеки Net Standard, классические библиотеки .Net Framework). Вы можете сделать это через пользовательский интерфейс Visual Studio: щелкните правой кнопкой мыши Dependencies->Add reference->Browse и выберите свой внешний .dll.

Кроме того, вы можете редактировать файл .csproj:

<ItemGroup>
  <Reference Include="MyAssembly">
    <HintPath>path\to\MyAssembly.dll</HintPath>
  </Reference>
</ItemGroup>

Вы можете столкнуться со следующей ошибкой:

Необработанное исключение: System.IO.FileNotFoundException: не удалось загрузить файл или сборку

затем просто удалите папку \bin и перестройте проект. Это должно решить проблему.

Как это возможно

Net Core 2.0 поддерживает .Net Standard 2.0. Net Standard 2.0 обеспечивает режим совместимости для подключения .Net Core (.Net Standard) и .NET Framework. Он может перенаправлять ссылки, например, на System.Int32 из mscorlib.dll (Net. Framework) в System.Runtime.dll (Net. Core). Но даже если ваше сетевое основное приложение успешно скомпилировано с зависимостью от внешней dll вас могут возникнуть проблемы с совместимостью во время выполнения, если есть какой-либо API, используемый внешней библиотекой, которого нет в .Net Standard.

Ответ 2

  • .NET Core работает с зависимостями только через Nuget. Как импортировать проект .NET Core в другой проект .NET Core в Visual Studio? и Ссылка на стандартные библиотеки DLL из проекта .NET Core XUnit.

  • Используя VS Code, вы можете добавить ссылки на пакет Nuget, модифицирующий файл project.json. Загляните в раздел "зависимости"

    Объект, который определяет зависимости пакета проекта, каждый ключ этого объекта является именем пакета, а каждое значение содержит информацию о версиях. Для получения дополнительной информации см. Статью разрешения зависимостей на сайте документации NuGet.

    Обновление: начиная с .NET Core 1.1, вам нужно изменить файл .csproj, добавив раздел <PackageReference>. Как пример:

    <ItemGroup>
     <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
     <PackageReference Include="MySql.Data" Version="6.9.9" />
    </ItemGroup>
    
  • В С# using add namespace, а не ссылка на сборку.


Ответ 4

Не уверен, что вы подразумеваете под "внешним". Если это основной проект и строится в том же решении, вы можете ссылаться на него с помощью project.json.

"dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    },
    "MyLibrary": "1.0.0-*",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", 
    etc..