2011-08-16 28 views
8

Tôi muốn tải tệp .NET 2.0 dll trong .Net4.0 dll. Tôi đã tìm kiếm giải pháp và tìm thấy thuộc tính 'useLegacyV2RuntimeActivationPolicy' mà tôi có thể thêm vào app.config của mình như trong url này: Mixed mode assembly is built against version 'v1.1.4322'truy cập .net2.0 dll in a .net 4.0 dll

Nhưng vấn đề đối với tôi là, trong trường hợp của tôi, tôi đang cố gắng sử dụng .net2.0 dll trong của tôi 4.0 DLL và không phải trong một exe 4,0. Lý do là 4.0 dll này sau đó được sử dụng trong Excel như một add-in tự động hóa.

Hiện tại, khi tôi truy cập .NET 4.0 API (tải 2.0 dll cho một tính năng) từ Excel, tôi nhận được 'hỗn hợp chế độ 2.0 dll không thể tải trong thời gian chạy 4.0', điều này dễ hiểu vì COM đã tải 4,0 CLR và do đó không thể tải 2,0 dll.

Bằng cách nào đó tôi cần làm cho 4.0 DLL của tôi tải thời gian chạy 2.0. Tôi đã thử thêm một app.config vào 4.0 dll nhưng tôi đoán chỉ .exe lần đọc app.config theo mặc định để tải clr. Đây là những gì tôi có trong app.config của tôi trong dự án 4.0 dll nhưng không sử dụng.

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
    <runtime> 
    <NetFx40_LegacySecurityPolicy enabled="true"/> 
    </runtime> 
</configuration> 

Làm thế nào để giải quyết vấn đề này để cho phép tôi .NET 4.0 DLL sử dụng .NET 2.0 dll?

Cảm ơn, Mani

+1

Bạn đã thử thêm .net 2 dll như bạn sẽ làm một dll bình thường? – Jethro

+0

Nghe có vẻ như nó không phải là một .NET 2.0 DLL - đó là một .NET 1.1 DLL. –

+7

Tệp .config là tốt, nhưng nó cần phải là excel.exe.config và được sao chép vào thư mục Office nơi excel được đặt. –

Trả lời

4

Câu trả lời đã được thực hiện bởi Hans passant nhưng ông đã được đăng là một nhận xét. Do đó, trả lời riêng ở đây.

Cấu hình phải được gọi là excel.exe.config và phải ở trong cùng thư mục văn phòng như excel.exe để kịch bản này hoạt động.

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