2010-12-10 63 views
23

Tôi có dll này mà tôi đã tạo một thời gian dài trước đây và sử dụng để kết nối với db của một phần mềm cụ thể mà tôi phát triển. Tôi đã không có vấn đề trong hơn 4 năm và vô số các ứng dụng với dll này.Không thể tải tệp hoặc lắp ráp '***. Dll' hoặc một trong các phụ thuộc của nó

Đang cố gắng để triển khai sáng tạo mới nhất của tôi, tôi nhận được lỗi sau:

System.IO.FileNotFoundException: Could not load file or assembly '***.dll' or one of its dependencies. The specified module could not be found. 

Vì vậy, đối với mỗi dll mà tôi từng viết, tôi luôn luôn làm một ứng dụng hình thức đơn giản để kiểm tra dll rằng chỉ bằng cách riêng của mình. Chạy ứng dụng đơn giản đó mang lại cùng một lỗi. Các dll không tải hoặc sử dụng bất cứ điều gì khác hơn là: System, System.Data, System.XML. Vì vậy, theo như depencies của nó đi, tôi không thấy bất cứ điều gì sai trái.

Bằng cách này, mọi thứ hoạt động trên đài phát. Vấn đề được giới hạn ở các trạm triển khai. .Net và redistributables cần thiết, vì tôi làm mọi thứ trong C++, được triển khai và làm việc.

Chạy FUSLOGVW.exe hiển thị mọi thứ hoạt động tốt.

Chạy depends.exe cho biết: Cảnh báo: Ít nhất một mô-đun có nhập chưa được giải quyết do chức năng xuất thiếu trong mô-đun phụ thuộc tải chậm.

Tôi đã cố gắng viết lại toàn bộ nội dung. Trong đó mang lại kết quả tương tự.

Hãy tìm bất cứ ai?

CÁC CHỈNH SỬA

Dưới đây là tổng thông báo lỗi:

See the end of this message for details on invoking \" 
just-in-time (JIT) debugging instead of this dialog box.\" 

************** Exception Text **************\" 
System.IO.FileNotFoundException: Could not load file or assembly 'connectionTo.dll' or one of its dependencies. The specified module could not be found.\" 
File name: 'connectionToJobboss32.dll'\" 
    at TESTConnection.Form1.button1_Click(Object sender, EventArgs e)\" 
    at System.Windows.Forms.Control.OnClick(EventArgs e)\" 
    at System.Windows.Forms.Button.OnClick(EventArgs e)\" 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)\" 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\" 
    at System.Windows.Forms.Control.WndProc(Message& m)\" 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)\" 
    at System.Windows.Forms.Button.WndProc(Message& m)\" 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\" 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\" 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\" 
\" 



************** Loaded Assemblies **************\" 
mscorlib\" 
    Assembly Version: 4.0.0.0\" 
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)\" 
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll\" 
----------------------------------------\" 
TESTConnection\" 
    Assembly Version: 1.0.3996.18980\" 
    Win32 Version: \" 
    CodeBase: file:///C:/Program%20Files%20(x86)/conn/TESTConnection.exe\" 
----------------------------------------\" 
System.Windows.Forms\" 
    Assembly Version: 4.0.0.0\" 
    Win32 Version: 4.0.30319.1 built by: RTMRel\" 
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll\" 
----------------------------------------\" 
System.Drawing\" 
    Assembly Version: 4.0.0.0\" 
    Win32 Version: 4.0.30319.1 built by: RTMRel\" 
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll\" 
----------------------------------------\" 
System\" 
    Assembly Version: 4.0.0.0\" 
    Win32 Version: 4.0.30319.1 built by: RTMRel\" 
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll\" 
----------------------------------------\" 

Không có lỗi trong trình xem sự kiện.

Trả lời

18

Tôi đã gặp vấn đề tương tự với dll ngày hôm qua và tất cả nó được tham chiếu là System, System.Data và System.Xml. Hóa ra cấu hình xây dựng cho loại Platform không xếp hàng. Các dll được xây dựng cho x86 và chương trình sử dụng nó là "Bất kỳ CPU" và kể từ khi tôi đang chạy một máy x64, nó chạy chương trình như x64 và đã có vấn đề với dll x86. Tôi không biết đây có phải là vấn đề của bạn hay không, chỉ nghĩ rằng tôi sẽ đề cập đến nó như một cái gì đó khác để kiểm tra.

+0

Vì tôi viết trong Managed C++, "Any CPU" không tồn tại. Tôi đã kiểm tra anyways quản lý cấu hình và cả hai, dll và ứng dụng, được thiết lập cho Win32. Kể từ khi tôi xây dựng này trong 32 bit, tôi đã chạy nó từ thư mục Program Files (x86) của tôi để tránh các vấn đề với 64bits. ... Vì vậy, tôi đã được nhìn vào điều này, nhưng tôi không thấy bất cứ điều gì sai trái. Oh và một trong những trạm tôi đang cố gắng triển khai trên là một máy 32 bit anyways. –

+0

Có vấn đề tương tự. Tôi đọc câu trả lời của bạn và không thể thay đổi nó với giao diện VS. Vì vậy, tôi đã mở tệp dự án trong trình soạn thảo văn bản và thay đổi nó thành AnyCPU theo cách thủ công và nó hoạt động.Ngay cả giao diện VS chấp nhận giá trị như nó nên ở vị trí đầu tiên. –

4

Tôi đã gặp phải điều này gần đây. Nó bật ra rằng DLL cũ đã được biên soạn với một phiên bản trước đó (Visual Studio 2008) và đã tham khảo phiên bản của thư viện thời gian chạy động. Tôi đã cố gắng để chạy nó trên một hệ thống mà chỉ có NET 4.0 trên nó và tôi sẽ không bao giờ cài đặt bất kỳ thư viện thời gian chạy động. Giải pháp? Tôi biên dịch lại DLL để liên kết các thư viện thời gian chạy tĩnh.

Kiểm tra nhật ký lỗi ứng dụng của bạn trong Trình xem sự kiện (EVENTVWR.EXE). Nó sẽ cung cấp cho bạn thêm thông tin về lỗi và có thể sẽ chỉ cho bạn nguyên nhân thực sự của vấn đề.

+0

Tôi đã xem trình xem sự kiện và đăng thông báo lỗi mà tôi nhận được hoàn toàn. Không có gì hiển thị trong trình xem sự kiện. –

+1

Bạn nói nó hoạt động trên máy dev chứ không phải trên máy triển khai. Bạn đang triển khai một phiên bản gỡ lỗi của dll và bạn không có các thư viện gỡ lỗi trên máy triển khai? Có một số phiên bản khác của connectionTo.dll hoặc connectionToJobboss32.dll ở đâu đó trong đường dẫn tìm kiếm không? –

+0

Tôi đã thử cả hai phiên bản gỡ lỗi và phát hành của nó. Tất cả đều có cùng lỗi. Tôi đã sử dụng để có được lỗi thiếu MSVCR100.dll. Đó là thư viện redistributable cho các ứng dụng được tạo bằng MS VC++, nhưng tôi sao chép nó cùng với ứng dụng ngay bây giờ. Tôi cũng thay thế nó bằng MSVCR100d.dll khi sao chép phiên bản gỡ lỗi thay thế. –

30

or one of its dependencies

Đó là vấn đề thường gặp, bạn không thể thấy tệp DLL không được quản lý có Fuslogvw.exe. Điều tốt nhất cần làm là chạy tiện ích ProcMon của SysInternals. Bạn sẽ thấy nó tìm kiếm DLL và không tìm thấy nó. Chế độ hồ sơ trong Dependency Walker cũng có thể hiển thị nó.

+1

Bạn có thể chỉ ra những gì cần tìm trong nhật ký ProcMon hoặc ngay cả trong Dependency Walker không? Tôi thành thật không thấy gì ngoài Thành công trong cả hai tiện ích. Trong ProcMon tôi thấy một vài 'File không tìm thấy', nhưng chúng được theo sau ngay lập tức bằng cách tìm kiếm cùng một tệp trong một đường dẫn khác và gặp thành công. –

+0

Bạn đang tìm kiếm điều đúng đắn. Thất vọng, đó là một cách chắc chắn để xem nó. Không có ý tưởng, ngoài việc chết đuối trong dữ liệu. Bạn có thể lưu dấu vết và đặt nó vào một dịch vụ chia sẻ tập tin nếu bạn muốn một bộ mắt khác trên đó. –

+1

Thiết lập trường 'Working Directory' trong thiết lập của dự án .NET (tab' Debug') vào thư mục với tất cả các DLL mà chương trình của tôi phụ thuộc vào sự cố này đã được khắc phục cho tôi. – MasterMastic

6

Tôi đã gặp vấn đề tương tự. Đối với tôi, nó được gây ra bởi các thiết lập mặc định trong máy chủ IIS cục bộ trên máy tính của tôi.Vì vậy, cách dễ dàng để sửa chữa nó, là sử dụng máy chủ phát triển Visual Studio được xây dựng thay thế :)

Phiên bản IIS mới hơn trên máy x64 có cài đặt không cho phép các ứng dụng 32 bit chạy theo mặc định. Để kích hoạt ứng dụng 32 bit trong IIS cục bộ, hãy chọn nhóm ứng dụng có liên quan trong trình quản lý IIS, nhấp vào "Cài đặt nâng cao" và thay đổi "Bật ứng dụng 32 bit" từ False thành True

2

Câu trả lời này hoàn toàn không liên quan đến OP tình huống, và là một kịch bản rất khó cho bất kỳ ai khác, nhưng chỉ trong trường hợp nó có thể giúp ai đó ...

Trong trường hợp của tôi, tôi không thể tải tệp hoặc lắp ráp 'System.Windows.Forms, Version = 4.0.0.0 ... "bởi vì tôi đã tháo rời và lắp ráp lại chương trình bằng cách sử dụng ILDAsm.exe và ILAsm.exe từ phiên bản .Net Framework/SDK 2. Chuyển sang ILDAsm.exe và ILAsm.exe từ .Net Framework/SDK phiên bản 4 cố định vấn đề.

(Kỳ lạ thay, mặc dù làm những gì tôi đã làm có vẻ giống như một lỗi rõ ràng, dẫn đến file EXE mà không làm việc đã chỉ ra rằng nó nhắm mục tiêu Net 4 khi kiểm tra với JetBrains dotPeek.)

3

tôi thời gian gần đây nhấn vấn đề này, ứng dụng sẽ chạy tốt trên các máy phát triển và chọn các máy khác chứ không phải trên các máy được cài đặt gần đây. Nó bật ra rằng các máy nó đã làm việc trên có Visual C++ 11 Runtime được cài đặt trong khi các máy mới được cài đặt không. Thêm Visual C++ 11 Thời gian chạy lại có thể phân phối lại cho trình cài đặt ứng dụng đã khắc phục sự cố ...

+1

Lưu ý rằng có 2 phiên bản của Visual C++ Runtime: 32 và 64 bit. Cài đặt cả hai để chắc chắn. Trong trường hợp của tôi chỉ có gói 64 bit đã giải quyết được vấn đề. – kDar

0

1) Sao chép DLL từ "Externals \ ffmpeg \ bin" vào thư mục đầu ra của dự án (nơi thực thi); 2) Đảm bảo dự án của bạn được xây dựng cho mục tiêu x86 (chạy ở chế độ 32 bit).

Follow this thread for more

0

Một cách dễ dàng hơn để xác định cách phụ thuộc một DLL bản địa có là sử dụng Dependency Walker - http://www.dependencywalker.com/

tôi đã phân tích DLL bản địa và phát hiện ra rằng nó phụ thuộc vào MSVCR120.DLL và MSVCP120.DLL, cả hai đều không được cài đặt trên máy chủ dàn dựng của tôi trong thư mục System32. Tôi đã cài đặt thời gian chạy C++ trên máy chủ dàn dựng của mình và sự cố đã được giải quyết.

1

tôi đã cùng một vấn đề - một .dll làm việc tất cả các thời gian, sau đó máy tính của tôi bị rơi và sau đó tôi có vấn đề này của 'không thể tải tập tin hoặc lắp ráp .... dll'

Hai giải pháp khả thi: khi máy tính bị lỗi có thể có một số tệp không nhất quán trong

C:\Users\<yourUserName>\AppData\Local\Temp\Temporary ASP.NET Files 

Xóa thư mục đó, biên dịch lại và lỗi đã biến mất.

Khi tôi cũng đã xóa thư mục gói của mình (tôi đã đọc ở một nơi khác). Cho phép Visual Studio/nuget cài đặt các gói bị thiếu (hoặc tự cài đặt lại) và sau đó mọi thứ đã ổn.

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