Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
nvson

Khắc phục lỗi "System.BadImageFormatException" khi load *.dll trong Autocad

Các bài được khuyến nghị

Nhờ các bác giúp tôi khắc phục lỗi này với:

Tôi làm trên VSTO 2010 và AutoCad 2011; trình tự như sau:

  • Trong VSTO 2010, File/ New Project/ Class Library, sau đó References tới 2 file AcDbMgd.dll và AcMgd.dll trong thư mục C:\Program Files\Autodesk\AutoCAD 2011

  • Rồi chèn thử 1 đoạn code như sau;

Imports Autodesk.AutoCAD.Runtime

Imports Autodesk.AutoCAD.ApplicationServices

Imports Autodesk.AutoCAD.EditorInput

Public Class Class1

<CommandMethod("myCommand")> _

Public Sub myRoutine()

'Access the AutoCAD Editor

Dim ed As Editor = Application. _

DocumentManager. _

MdiActiveDocument. _

Editor

'Write a simple message

ed.WriteMessage("My Hello World")

End Sub

End Class

 

  • Sau đó Biên dịch ra file *.dll.
  • Vào Autocad, đánh lệnh NETLOAD để load file *.dll trên, nhưng bị lỗi như sau:

Command: netload

Cannot load assembly. Error details: System.BadImageFormatException: Could not

load file or assembly 'file:///D:\MyHello\MyHello\bin\Debug\MyHello.dll' or one

of its dependencies. This assembly is built by a runtime newer than the

currently loaded runtime and cannot be loaded.

File name: 'file:///D:\MyHello\MyHello\bin\Debug\MyHello.dll'

at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase,

Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark,

Boolean throwOnFileNotFound, Boolean forIntrospection)

at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase,

Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark,

Boolean throwOnFileNotFound, Boolean forIntrospection)

at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,

Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)

at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence

securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm,

Boolean forIntrospection, StackCrawlMark& stackMark)

at System.Reflection.Assembly.LoadFrom(String assemblyFile)

at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)

at loadmgd()

WRN: Assembly binding logging is turned OFF.

To enable assembly bind failure logging, set the registry value

[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure

logging.

To turn this feature off, remove the registry value

[HKLM\Software\Microsoft\Fusion!EnableLog].

 

.

Mong các bác chỉ giúp.

Thanks so much

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

OK.

Xin cảm ơn bạn nhiều

 

Nhân tiện anh cho hỏi nếu dùng kiểu Class Library, sau đó Add References 2 files AcDbMgd.dll và AcMgd.dll trong thư mục C:\Program Files\Autodesk\AutoCAD 2011 thì sau khi biên dịch ra *.dll, file *.dll có chạy được trên tất các các phiên bản của AutoCad không?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

OK.

Xin cảm ơn bạn nhiều

 

Nhân tiện anh cho hỏi nếu dùng kiểu Class Library, sau đó Add References 2 files AcDbMgd.dll và AcMgd.dll trong thư mục C:\Program Files\Autodesk\AutoCAD 2011 thì sau khi biên dịch ra *.dll, file *.dll có chạy được trên tất các các phiên bản của AutoCad không?

Chạy dc với tất cả các phiên bản khác với điều kiện các properties/method mà bạn sử dụng phải có trong phiên bản của dll của chương trình AutoCAD mà bạn load ASM của bạn vào.

 

p/s: để chắc ăn các bạn có thể reference từng phiên bản của Acmgd và acdbmgd vào project và rebuild lại nếu ko có error thì nó work!

Good luck!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn bạn Detailing nhiều. Từ sáng tới giờ hì hục download bản VSTO 2008 về cài.

Đã Test thử và thành công.

Cảm ơn các bạn rất nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×