Использование внешнего .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, а не ссылка на сборку.
Ответ 3
Вы можете добавить dll со следующим кодом:
[DllImport("MyLbraryFile.dll", SetLastError = true, CharSet = CharSet.Auto)]
Все, что вам нужно сделать, это поместить dll в тот же каталог.
https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(v=vs.110).aspx
Ответ 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..