2016-10-18 25 views
9

Tôi đã sử dụng tệp .dll của riêng mình với Edge.js trong nút js, Tôi đang cố gắng sử dụng nó ngay bây giờ với ứng dụng lõi net thuần, nhưng không tìm thấy ở đâu/không có cách truy cập vào nó hoặc xác định nó.Sử dụng .dll bên ngoài trong lõi net dot

là có cái gì đó như

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

hoặc như

using MyLibraryFile.dll 

để tôi có thể sử dụng các chức năng trong nó?

cấu trúc file lắp ráp của tôi là: MyLibraryFile.dll

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

và không using MyLbrary; cũng không using MyLbraryFile; làm việc

tôi cần phải sử dụng điều này với biên tập viên MS Mã, không phải với MS Studio. và không muốn sử dụng NuGet package

+0

Tôi không quen với lõi .net, nhưng bạn không thể tham khảo nó như trong một dự án bình thường? – AgentFire

+0

KHÔNG, 'sử dụng MyLibrary;' không thể làm việc –

+0

Không phải là 'using', phần Tham chiếu của dự án, ngay dưới thuộc tính" Thuộc tính ". – AgentFire

Trả lời

5
  • NET Lõi làm việc với phụ thuộc chỉ qua NuGet. How do I import a .NET Core project to another .NET Core project in Visual Studio?Referencing standard dlls from a .NET Core XUnit project liên quan.

  • Sử dụng mã VS bạn có thể thêm tham chiếu vào gói Nuget sửa đổi project.json tệp. Xem phần "phụ thuộc"

    Đối tượng xác định gói phụ thuộc của dự án, mỗi khóa của đối tượng này là tên gói và mỗi giá trị chứa thông tin phiên bản. Để biết thêm thông tin, hãy xem bài viết về độ phân giải phụ thuộc trên trang tài liệu NuGet.

    Cập nhật: Bắt đầu từ .NET Core 1.1, bạn cần sửa đổi tệp .csproj bằng cách thêm <PackageReference> phần. Ví dụ:

    <ItemGroup> 
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" /> 
    <PackageReference Include="MySql.Data" Version="6.9.9" /> 
    </ItemGroup> 
    
  • Trong C# using thêm không gian tên, không tham chiếu đến lắp ráp.


+1

Thật kỳ lạ khi tôi sử dụng .net core 1.0, nó hoạt động tốt. Sau đó, tôi cập nhật khuôn khổ của tôi, nhưng hội đồng bên ngoài không thể được tham chiếu. Nó ném lắp ráp không tìm thấy ngoại lệ trực tiếp. – Howard

+0

Điều gì thực sự bất tiện là bạn có thể thực hiện "Thêm tham chiếu" trong dự án C# và chỉ trỏ tới một tập hợp .NET Core (mà bạn tự tạo), và nó sẽ tham khảo nó, và intelliSense sẽ làm việc cho nó . Tuy nhiên, ứng dụng sẽ không chạy, vì dll được tham chiếu không tải (nó không có trong TRUSTED_PLATFORM_ASSEMBLIES, mà bạn sẽ thấy nếu bạn đặt biến môi trường COREHOST_TRACE = 1). Vì vậy, bạn dành cả buổi chiều để tìm hiểu tại sao VS Add Reference không hoạt động. Cảm ơn bạn MS. – Wout

0

Bạn có thể thêm một dll với đoạn mã sau:

[DllImport("MyLbraryFile.dll", SetLastError = true, CharSet = CharSet.Auto)] 

Tất cả bạn phải làm là đặt dll trong cùng thư mục.

https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(v=vs.110).aspx

+1

Tại sao bạn chấp nhận câu trả lời này? Điều này không giống như một DLL không được quản lý. Nó trông giống như một hội đồng .net. Và @Leon, tại sao bạn quyết định rằng đây là một DLL không được quản lý, và thậm chí còn đáng ngạc nhiên hơn, tại sao bạn lại chọn 'SetLastError = true'? Có vẻ như bạn vừa sao chép từ đâu đó mà không thực sự nghĩ về những hàm ý. Điều gì làm cho bạn tin rằng DLL này thực sự gọi hàm Win32 'SetLastError()'? –

+1

@DavidHeffernan có quyền của bạn, tôi đã sao chép dòng này từ dự án của riêng tôi. Tôi sử dụng một dll vb.net đó, đó là lý do tại sao tôi sử dụng SetLastError = true. Indeet đây không phải là needet ở đây. Và tôi nghĩ rằng anh ấy chấp nhận câu trả lời, bởi vì nó hoạt động cho mục đích của anh ấy. –

+1

Thư mục giống như thư mục gì? Giải pháp, dự án, lớp tập tin dir? – Theyouthis

-1

Không chắc chắn ý của bạn là "bên ngoài". Nếu đó là một dự án cốt lõi và đang được xây dựng trong cùng một giải pháp, bạn có thể tham khảo nó bằng project.json.

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

Bên ngoài khá rõ ràng có nghĩa là nó KHÔNG được xây dựng trong cùng một giải pháp. Không? –

Các vấn đề liên quan