Như những người khác chỉ ra, stdole.dll
là một Interop hội tiểu học cho một loạt các thành phần interop Văn phòng COM. Bạn có thể xác định lý do tại sao nó được đưa vào dự án của bạn bằng cách làm như sau.
Trong Visual Studio, hãy truy cập Tools > Options > Projects and Solutions > Build and Run
. Thay đổi cài đặt "độ dài đầu ra xây dựng dự án MSBuild" thành Detailed
. Bây giờ làm sạch và xây dựng lại dự án của bạn.
Mở cửa sổ Đầu ra và tìm kiếm stdole
. Bạn sẽ tìm thấy một phần như sau:
25> Dependency "stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
25> Resolved file path is "D:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Common\stdole.dll".
25> Reference found at search path location "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
25> For SearchPath "D:\Git\FoobarServices\Dependencies\Dependencies".
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.winmd", but it didn't exist.
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.dll", but it didn't exist.
25> Considered "D:\Git\FoobarServices\Dependencies\stdole.exe", but it didn't exist.
25> For SearchPath "{CandidateAssemblyFiles}".
25> Considered "Dependencies\CrystalDecisions.CrystalReports.Engine.dll", but its name "CrystalDecisions.CrystalReports.Engine" didn't match.
25> Considered "Dependencies\CrystalDecisions.Enterprise.Framework.dll", but its name "CrystalDecisions.Enterprise.Framework" didn't match.
25> Considered "Dependencies\CrystalDecisions.Enterprise.InfoStore.dll", but its name "CrystalDecisions.Enterprise.InfoStore" didn't match.
25> Considered "Dependencies\CrystalDecisions.ReportSource.dll", but its name "CrystalDecisions.ReportSource" didn't match.
25> Considered "Dependencies\CrystalDecisions.Shared.dll", but its name "CrystalDecisions.Shared" didn't match.
25> Considered "Dependencies\CrystalDecisions.Web.dll", but its name "CrystalDecisions.Web" didn't match.
25> For SearchPath "{TargetFrameworkDirectory}".
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.winmd", but it didn't exist.
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.dll", but it didn't exist.
25> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.exe", but it didn't exist.
25> For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}".
25> Considered AssemblyFoldersEx locations.
25> Required by "CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.ReportSource, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.CrystalReports.Engine, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL".
25> Required by "CrystalDecisions.Enterprise.InfoStore, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304".
25> The ImageRuntimeVersion for this reference is "v1.0.3705".
Bạn có thể thấy nơi Visual Studio tìm kiếm hội đồng cũng như những gì yêu cầu ở phía dưới. Trong trường hợp của tôi, đó là một loạt các tập hợp Crystal Reports cũ.
Đôi khi bạn có thể nhúng các loại interop thông qua các phụ thuộc như Tony gợi ý, nhưng không phải lúc nào. Đối với tôi, hội đồng Crystal Reports không hỗ trợ điều này.
Tôi đã khắc phục vấn đề này (bằng cách sao chép stdole.dll
(32KB, chữ ký số) từ C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\
vào thư mục "Phụ thuộc" bên trong dự án của tôi. Tôi đã thêm tệp vào dự án của mình và thêm một tham chiếu rõ ràng vào nó (Thêm Tham chiếu> Duyệt).Cuối cùng, tôi đã mở thuộc tính của tham chiếu mới và đặt Embed Interop Types
thành True
.
Điều này có vẻ là một tình huống tốt hơn. Tôi không cần phải lo lắng về việc nhận được một phiên bản chưa ký của hội đồng.
Làm thế nào về điều đó? Downvote đầu tiên của tôi. Một downvote không có phản hồi là rất không hiệu quả. –
Tôi quan tâm đến câu hỏi này, bởi vì stdole.dll đang bật lên trên tất cả các ứng dụng mà tôi làm. Tôi xuất bản với nhấp một lần và nó gây ra lỗi với studio trực quan 2015. Nó có thể không liên quan đến câu hỏi này, nhưng những người khác có thể tìm thấy câu hỏi này tìm kiếm dll đó. Anh chàng này, anh ta đã thay thế nó bằng một bản sao đã ký trong: https://iznum.wordpress.com/2013/04/22/strong-name-signature-not-valid-for-this-assembly-stdole-dll/ – 249076
Một tên khác đã đăng lỗi về điều này: https://connect.microsoft.com/VisualStudio/feedback/details/1658072/could-not-load-assembly-file-stdole-dll-that-were-not-actually-using – 249076