2013-05-15 29 views
6

chúng tôi có một ứng dụng được viết bằng .NET 4.0 sử dụng Báo cáo tinh thể SAP này. Trong khi cùng một build (x86) hoạt động hoàn toàn OK trong Windows 2003/2008 (cả x86/x64) với .NET 4.0 framework được cài đặt (x86) và CrystalReports runtimes được cài đặt (donwladed từ các trang SAP http://scn.sap.com/docs/DOC-7824) bằng cách sử dụng 13.0.1.x (32bit_13_0_1.msi).Không thể tải tệp hoặc lắp ráp máy chủ 'CrystalDecisions.CrystalReports.Engine'/Windows 2012

Khi cùng một nội dung được cài đặt trong máy chủ MS 2012 (x64), đã có .NET framework 4.5 được cài đặt sẵn, do đó tôi không thể cài đặt .NET 4.0, tuy nhiên có vẻ như nó tương thích ngược, vì ứng dụng đang hoạt động đúng cách, ngoại trừ phần Crystal Reports, trong đó ứng dụng ném một ngoại lệ.

Không thể tải tệp hoặc lắp ráp 'CrystalDecisions.CrystalReports.Engine, Phiên bản 10.5.3700.0, culture = neutral, PublicKeyToken = blahblah' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định.

Tất nhiên thời gian chạy được cài đặt, nhưng vì lý do nào đó ứng dụng của chúng tôi không thể nhận ra các tệp DLL đó. Cá nhân tôi không nghĩ rằng đó là một vấn đề xây dựng vì nó hoạt động đúng với cấu hình tương tự trong máy chủ 2003/2008.

Chúng tôi chỉ có phiên bản phát hành được cài đặt, vì vậy không có tùy chọn gỡ lỗi nào khả dụng và VS cũng không được cài đặt.

Về cơ bản, chúng tôi chỉ thực hiện một số kiểm tra nếu ứng dụng hoạt động bình thường trong máy chủ 2012, nhưng vấn đề này dường như không thể giải quyết được. Tôi đã dành hàng giờ trên Google để không có kết quả. Vì vậy, bất kỳ ý tưởng gì để kiểm tra được đánh giá cao :)

Cảm ơn Tomas


Sửa


Giải pháp: để cài đặt runtimes cũ năm 2008.
Nguyên nhân gốc: Trên máy xây dựng của chúng tôi, chúng tôi có cả hai thời gian chạy vẫn được cài đặt (chúng tôi cũng cần hỗ trợ các phiên bản cũ hơn). Trong proj tệp các hội đồng CR không được tham chiếu phiên bản cụ thể, chỉ bằng tên. Vì vậy, trong quá trình xây dựng, lắp ráp phù hợp thấp nhất đầu tiên từ GAC đã được sử dụng và do đó cần phải có CR 2008 cài đặt là tốt. Giải pháp là để tham khảo các hội đồng bên thứ 3 trong các tập tin dự án cũng theo phiên bản để buộc việc sử dụng các phiên bản mới hơn.

+1

Ok, đã giải quyết. Bằng cách sử dụng "gacutil/lr" tôi nhận ra rằng CR được sử dụng cho xây dựng đã được cho VS 2008. Cài đặt runtimes cũ giải quyết vấn đề này. – TomKyblik

Trả lời

5

Chúng tôi đã gặp sự cố tương tự, tuy nhiên trong dự án của chúng tôi, phiên bản đã được chỉ định. Dự án của chúng tôi cũng không được đặt tên mạnh. Mạnh mẽ đặt tên cho hội đồng sẽ làm cho điều này không phải là một vấn đề.

csproj trước

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion>  <HintPath>..\..\..\..\..\Workspace\SharedLibraries\trunk\Lib\CrystalDecisions.ReportSource.dll</HintPath> 
    </Reference> 

Thông báo các SpecificVersion được thiết lập là false. Chuyển đổi điều này thành sự thật có thể giải quyết vấn đề, chúng tôi đã không thử điều đó.

Đường dẫn gợi ý không được tìm thấy hoặc là phiên bản cũ hơn. Nếu nó không được tìm thấy sau đó nó sẽ lấy dll Crystal đầu tiên được tìm thấy trong GAC đó là phiên bản 10.5.

.csproj sau

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" /> 

Điều này buộc xây dựng dựa trên phiên bản chính xác.

1

Một giải pháp khác là nâng cấp lên Crystal Reports cho Visual Studio, tương thích với VS2010 +. Nếu bạn muốn có thể chỉnh sửa các báo cáo trong Visual Studios gần đây, đây là cách để đi. Giải pháp cài đặt thời gian chạy cũ của bạn giải quyết được vấn đề mà không thay đổi giải pháp, trong khi cài đặt tinh thể mới hơn yêu cầu nâng cấp tất cả các báo cáo trong giải pháp.

1

tôi giải quyết rằng lỗi lắp ráp bởi:

  • Đầu tiên chỉ unistall gói sử dụng NuGet gói
  • Thứ hai là cài đặt một lần nữa sử dụng NuGet gói
  • Và cuối cùng là xuất bản và tải lên VPS và nó sẽ hoạt động.