Tôi gặp vấn đề với một số VC++ DLL, mà tôi nên đưa vào dự án .NET/C# của mình. Một VC++ DLL là một DLL C++/CLI, mà tôi sử dụng như giao diện công cộng từ dự án .NET của tôi. Các DLL khác được viết bằng native C++. Tôi không có quyền truy cập vào nguồn của VC++ DLL, tôi chỉ cần sử dụng chúng.WinSxS không tải được VC++ DLL
Tôi đã thực hiện dự án thử nghiệm .NET và tham chiếu DLL C++/CLI. Không có vấn đề, trình biên dịch là may mắn, tuyệt vời. Chỉ có một vấn đề: khi tôi bắt đầu chương trình EXE của .NET, tôi gặp lỗi về DLL C++ vì thiếu các DLL lõi VC++. sxstrace cho thấy sau (rút ngắn):
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference: Microsoft.VC80.OpenMP,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
...
ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
Bây giờ tôi không có kẻ ngốc và cố gắng một vài điều. Tôi đã đọc nhiều về WinSxS để hiểu sâu hơn về những gì đang diễn ra. Bây giờ tôi đang ở thời điểm đó, nơi nó nhận được sự khâm phục đối với tôi. Hệ thống mà tôi muốn thực hiện chương trình có gói VC++ Redistributable trong phiên bản 8.0.50727.762 (SP1) hiện tại đã được cài đặt. Tôi biết rằng có một tập tin chính sách cho Microsoft.VC80.CRT trong winsxs chuyển hướng tất cả các phiên bản của hội đồng này đến phiên bản hiện tại 8.0.50727.762 (đó là giải pháp cho vấn đề tại http://blogs.msdn.com/b/nikolad/archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx). Nhưng khi lỗi ở trên cho biết, tệp chính sách này dường như không hoạt động hoặc không được tính đến. Hệ thống chỉ muốn tìm phiên bản 8.0.50727.6195 của hội đồng.
Bây giờ, đó là câu hỏi đầu tiên: vấn đề ở đây là gì? Sau khi tôi đã tìm ra điều này, tôi có thể giải quyết vấn đề ban đầu ...
Phiên bản không phù hợp là tinh thể rõ ràng trong thông điệp. Nó muốn 8.0.50727.6195, bạn đã có 8.0.50727.762. Truy cập search.microsoft.com và đặt "8.0.50727.6195" vào hộp tìm kiếm. –
Câu hỏi đặt ra là liệu có thể "thuyết phục" ứng dụng chấp nhận 762 thay vì 6195. – Dialecticus
Tôi không chắc chắn về phiên bản của Microsoft trong trường hợp này. Tôi không tìm thấy một gói Redist 2005 Redist với phiên bản 8.0.50727.6195 tại Microsoft Download, gói VC + 2005 Redist hiện tại có trong phiên bản 8.0.50727.762. Nếu 762 là phiên bản cao hơn 6195, nó phải như tôi đã viết: tập tin chính sách WinSxS nên chuyển hướng 6195 đến 762 - nhưng nó không. – Matthias