Tôi nhận được một bản dịch Một nỗ lực đã được thực hiện để tải một chương trình có lỗi định dạng không đúng định dạng trên một dự án sao chép SQL Server


318

Lỗi chính xác như sau

Không thể tải tệp hoặc tập hợp 'Microsoft.SqlServer.Replication, Version = 9.0.242.0, Culture = trung tính, PublicKeyToken = 89845dcd8080cc91' hoặc một trong các phụ thuộc của nó. Một nỗ lực đã được thực hiện để tải một chương trình với định dạng không chính xác.

Gần đây tôi đã bắt đầu làm việc với dự án này sau hai tháng chuyển sang dự án khác. Nó hoạt động hoàn hảo trước đây và tôi đã kiểm tra lại tất cả các tài liệu tham khảo.

Câu trả lời:


405

Câu trả lời của baldy dưới đây là chính xác, nhưng bạn cũng có thể cần bật các ứng dụng 32 bit trong AppPool của mình.

Nguồn: http://www.alexjamesbrown.com a-chương trình với một định dạng không chính xác /

Trong khi thiết lập một ứng dụng để chạy trên máy cục bộ của tôi (chạy Vista 64 bit), tôi đã gặp phải lỗi này:

Không thể tải tập tin hoặc lắp ráp ChilkatDotNet2hoặc một trong các phụ thuộc của nó. Một nỗ lực đã được thực hiện để tải một chương trình với định dạng không chính xác.

Rõ ràng, ứng dụng sử dụng các thành phần ChilKat , nhưng dường như phiên bản chúng tôi đang sử dụng, chỉ là phiên bản 32 bit.

Để khắc phục lỗi này, tôi đặt nhóm ứng dụng của mình trong IIS để cho phép các ứng dụng 32 bit. Mở IIS Manager, nhấp chuột phải vào nhóm ứng dụng và chọn Cài đặt nâng cao (Xem bên dưới)

nhập mô tả hình ảnh ở đây

Sau đó đặt "Bật ứng dụng 32 bit" thành True.

nhập mô tả hình ảnh ở đây

Tất cả đã được làm xong!


Điều này có khiến toàn bộ nhóm ứng dụng chạy dưới dạng 32 bit và không đầy đủ 64 bit không? Sẽ biên dịch lại sự phụ thuộc cho 64-bit / tất cả các nền tảng sẽ là một giải pháp tốt hơn? Tôi đang gặp vấn đề này do NFOP, nhưng vì nó là nguồn mở, tôi có thể biên dịch lại nó.
jamiebarrow

2
Liên kết không hoạt động, nhưng lời giải thích của bạn là đủ để giải quyết vấn đề của tôi. +1
Andrew Shepherd

Liên kết với các hướng dẫn về cách bật ứng dụng 32 bit: blog.msdn.com/b/rakkimk/archive/2007/11/03/ợi
Brandon S

15
Có thể đáng lưu ý rằng giải pháp AppPool này chỉ áp dụng cho các ứng dụng ASP.NET - có thể gây nhầm lẫn cho một số nhà phát triển không bao giờ sử dụng / cấu hình ASP.NET hoặc IIS.
galaktor

không sửa nó trong IIS7 chỉ trong IIS7.5
FlavorScape

120

Tôi đã tìm thấy giải pháp. Gần đây tôi đã nâng cấp máy của mình lên Windows 2008 Server 64-bit. Không gian tên SqlServer.Replication được viết cho các nền tảng 32 bit. Tất cả những gì tôi cần làm để khiến nó chạy lại là đặt Nền tảng đích trong Thuộc tính xây dựng dự án thành X86.


Tôi đang gặp vấn đề với DLL, nhưng Project> HDP Properties của tôi ... không có tab "Build" (dường như mọi thứ nhưng, nhưng không phải vậy). Cả tab Compile và Debug đều có danh sách thả xuống "Nền tảng", nhưng mục duy nhất trong danh sách thả xuống trong cả hai trường hợp là "Hoạt động (Bất kỳ CPU)".
B. Clay Shannon

Tôi tình cờ gặp phải vấn đề ngược lại. Tôi đã có mọi thứ chạy trong 64 bit và mục tiêu Build của tôi là Bất kỳ CPU nào. Khi tôi thay đổi điều này thành 64-bit, nó hoạt động rất tốt :)
Madhurya Gandi

87

Thay đổi giá trị cho Target Target trên trang thuộc tính của dự án web của bạn thành Any CPU.

nhập mô tả hình ảnh ở đây


Không có tác dụng, thật không may.
Jonathan

4
Tôi đã sai - điều này đã hoạt động, sau khi tôi thoát khỏi tất cả các thư mục 'bin' của mình. Cảm ơn!
Jonathan

Cũng đã khắc phục sự cố của tôi, nhưng chỉ sau khi thực hiện điều này cho MỌI dự án trong giải pháp của tôi. Các bước được đề cập là dành cho các dự án C #. Đối với các dự án VB.NET, thay đổi Thuộc tính dự án> Biên dịch> Tùy chọn biên dịch nâng cao> CPU mục tiêu thành "AnyCPU"
Francois Botha

6
Trong trường hợp của tôi, dự án đã nhắm mục tiêu "Bất kỳ CPU". Nhưng tôi đang chạy Windows 64 bit và đang cố gắng tạo một trình điều khiển phần cứng trường học cũ. Cụ thể việc thay đổi mục tiêu thành x86 đã cố định nó cho tôi.
bsegraves

Trong trường hợp của tôi, tôi muốn chạy dưới x64. Nó không hoạt động. Sau khi thay đổi tất cả các đề xuất, tôi cũng phải thay đổi 'Nhân chứng' trong Web cũng thành x64
SKCS Kamal

52

Truy cập IIS -> Nhóm ứng dụng -> Cài đặt nâng cao -> Bật ứng dụng 32 bit


Clay, phiên bản IIS nào bạn đang sử dụng?
Harpal

23

Gần đây chúng tôi đã gặp sự cố khi cố chạy mã từ Visual Studio. Trong trường hợp đó, bạn cần thực hiện
CÔNG CỤ> TÙY CHỌN> Dự án và Giải pháp> DỰ ÁN WEB và kiểm tra "Sử dụng phiên bản 64 bit của IIS Express cho các trang web và dự án".


1
Đây là những gì cuối cùng làm việc cho tôi. Đặc biệt là đối với những người đang cố gắng gỡ lỗi API Web với các thư viện Service Fabric !!! Nếu bạn đang sử dụng bất kỳ DLL cấu trúc dịch vụ nào trong dự án của mình, hãy đảm bảo bạn đang sử dụng giải pháp trên.
Chris Dutra

Đây là giải pháp DUY NHẤT làm việc cho tôi. Cảm ơn. : D
Jeremy Styer

Làm việc cho tôi quá!
Cù Đức Từ

11

Đối với những người gặp lỗi này trong dự án ASP.NET MVC 3 , trong chính Visual Studio:

Trong một ứng dụng ASP.NET MVC 3 mà tôi đang làm việc, tôi đã thử thêm một tham chiếu đến Microsoft.SqlServer.BatchParser vào một dự án để giải quyết vấn đề bị thiếu trên máy chủ triển khai. (Ứng dụng của chúng tôi sử dụng SMO; cách khắc phục chính xác là cài đặt SQL Server Native Client và một vài thứ khác trên máy chủ triển khai.)

Ngay cả sau khi tôi xóa tham chiếu đến BatchParser, tôi vẫn gặp lỗi "Một nỗ lực đã được thực hiện ...", tham chiếu DLL BatchParser, trên mỗi trang ASP.NET MVC 3 tôi đã mở và lỗi đó được theo sau bởi hàng tá phân tích cú pháp trang lỗi.

Nếu điều này xảy ra với bạn, hãy thực hiện tìm kiếm tệp và xem liệu DLL có còn trong một trong các thư mục \ bin của dự án của bạn không. Ngay cả khi bạn xây dựng lại, Visual Studio không nhất thiết phải xóa tất cả mọi thứ trong tất cả các thư mục \ bin của bạn. Khi tôi xóa DLL khỏi thùng và xây dựng lại, lỗi đã biến mất.


Tôi vừa mới xây dựng lại và vấn đề đã biến mất mà không cần phải xóa thủ công DLL. Cảm ơn!
Trevor

4

Tôi đã có điều này trong một ứng dụng MVC5 trong Windows 10 so với IIS Express. Giải pháp của tôi là như sau:

  • Công cụ =>
    • Tùy chọn =>
      • Dự án và Giải pháp =>
        • Dự án web =>
          • Sử dụng phiên bản 64 bit của IIS Express cho các trang web và dự án

3

thay đổi nó thành 32-bit (đúng) nó hoạt động

nếu bạn nhận được Độ dài này không thể nhỏ hơn 0. Tên tham số: vấn đề độ dài trong cấu hình máy chủ iis, điều đơn giản là thay đổi chuỗi kết nối trong tệp web.config như tên máy chủ sql và tên máy chủ của bạn và khởi động lại iis sau đó thử tải trang nó hoạt động


2

Nếu Xuất bản trong Visual Studio 2012 khi gặp lỗi, hãy bỏ chọn tùy chọn "Procompile trong khi xuất bản" trong Trình hướng dẫn xuất bản.

Bỏ chọn "Biên dịch trước khi xuất bản"


0

trong ứng dụng biểu mẫu windows Tôi làm điều này, Nhấp chuột phải vào Project-> Properties-> Build-> Check Prefer 32-box. Cảm ơn tất cả


0
  1. Xóa thư mục kiểm tra tạm thời ở đây C: \ Users (Người dùng) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Đặt tất cả các dự án thành x64 trong Visual Studio

  3. Đặt kiến ​​trúc bộ xử lý mặc định thành x64 (Test / TestSinstall / Architecture Processor Architecture).

Hãy chắc chắn để dọn dẹp xây dựng tập tin giải pháp. Hy vọng điều này sẽ giúp!


0

Việc thay đổi Target Framework trong các thuộc tính dự án từ .NET Framework 4.7.1 thành 4.6.2 đã giúp tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.