2012-10-07 3 views
25

Tôi có cài đặt sạch Windows 8 trên phân vùng, với Visual Studio 11/2012 Professional được cài đặt và tôi không thể tìm thấy regtlibv12.exe bên trong C:\Windows\Microsoft.NET\Framework\v4.0.30319.Điều gì đã xảy ra với regtlibv12?

Dưới đây là một ảnh chụp màn hình của phân vùng Windows 7 của tôi, với Net 4.0 (và regtlibv12):

Windows 7 - .Net 4

Dưới đây là Windows 8 với Net 4.5 (và không có regtlibv12):

Windows 8 - .Net 4.5

regtlibv12 không còn là một phần của khuôn khổ .Net? Tôi có cần cài đặt .Net 4.0 không? Điều gì sẽ xảy ra nếu tôi cài đặt .Net 4.0 trên đầu 4.5? Tôi biết rằng cả hai đều đi đến cùng một vị trí trên ổ đĩa cứng, và 4.5 có hiệu quả ghi đè lên 4.0, và 4.5 đến như mặc định trên Windows 8. Tôi có cần phải cài đặt 4.0, và sau đó cài đặt lại 4.5 để có được regtlibv12 trở lại?

Cảm ơn

Trả lời

33

Nó chưa bao giờ là một phần của khuôn khổ. Và nó hoàn toàn không có giấy tờ. Tuy nhiên, có một tin đồn rất phù hợp rằng, rất nhiều lập trình viên đã tìm thấy nó trong thư mục v2.0.50727 hoặc v4.0.30319 của họ và tìm ra rằng nó có thể giải quyết vấn đề đăng ký. Rất nhiều bài đăng trên diễn đàn đề cập đến nó.

Cách chính xác mà nó hiển thị trong các thư mục đó là khó đảo ngược kỹ sư, mẫu duy nhất tôi thấy là nó sẽ ở đó khi bạn tự cài đặt khung. Và sẽ không có ở đó khi khung được cài đặt sẵn trên máy. Mà phần nào làm cho tinh thần, có một số tập tin .tlb trong thư mục khung cần phải được đăng ký. Chúng chứa thông tin kiểu cho các kiểu .NET [ComVisible] mà mã máy khách có thể có sự phụ thuộc vào. Các thư viện kiểu cách bình thường được đăng ký không áp dụng cho các tệp .tlb này vì chúng không được nhúng trong máy chủ COM thông thường. Với dự đoán thêm rằng công cụ này không cần thiết trong phiên bản .NET được cài đặt sẵn vì thông tin đăng ký được cuộn lên trong thiết lập Windows thông thường.

Nếu bạn đã tự đặt mình vào một sự phụ thuộc vào công cụ thì bạn không thể làm gì ngoài việc sao chép .exe từ một máy khác. Hoặc giải quyết những lý do bạn cần phải sử dụng nó từ bên kia, do đó bạn không cần nó nữa:

  • nó là một cách giải quyết cho quên sử dụng tùy chọn/TLB với regasm.exe. Điều đó có thể tạo ra lỗi TYPE_E_CANTLOADLIBRARY khi chạy khi mã máy khách cố gắng sử dụng giao diện COM từ một luồng khác. Thư viện kiểu cung cấp thông tin kiểu mà trình soạn thảo tiêu chuẩn cần để sắp xếp các đối số của phương thức. Sử dụng tùy chọn/tlb để sửa lỗi đó.

  • đó là giải pháp để máy chủ COM hiển thị trong tab Dự án + Thêm tham chiếu, COM. Tab đó liệt kê các thư viện kiểu đã đăng ký. Tuy nhiên, đây không phải là giải pháp thích hợp, ngoài các máy chủ xây dựng, bạn có thể biên dịch mã của mình nhưng bạn không thể chạy nó vì đăng ký chưa hoàn tất. Cách thích hợp để làm điều đó là bằng cách sử dụng trình cài đặt được cung cấp của tác giả hoặc bằng cách sử dụng Regsvr32.exe trong một pinch để cả thư viện kiểu và các khóa CLSID được đăng ký.

  • đó là giải pháp cho các máy chủ COM không đăng ký thư viện kiểu của chúng. Tương tự như trên, nhưng việc đăng ký các thư viện kiểu là tùy chọn và thường chỉ được yêu cầu trên máy tính của bạn chứ không phải trên máy chạy máy chủ. Hầu hết các công cụ có thể tiêu thụ thư viện kiểu có một cách để thêm chúng một cách rõ ràng hơn là phụ thuộc vào khóa sổ đăng ký TypeLib.Vì vậy, hiện Visual Studio IDE, bạn có thể sử dụng tab Browse để thay thế để chọn tập tin .tlb trực tiếp.

+0

Rất thú vị, nếu tôi tìm hiểu cách thức nó lên máy tính của mình ban đầu, tôi sẽ để lại nhận xét, tuy nhiên tôi không cài đặt khung này trên Windows 7, nó được cài đặt cùng với Visual Studio, giống như nó đã làm bất cứ khi nào tôi cài đặt Visual Studio trên Windows 8 – JMK

+1

Không, có một sự khác biệt lớn. .NET 4.5 được cài đặt sẵn trên Windows 8. –

+0

Xin lỗi về khóa học và 3.5 được cài đặt sẵn trên Windows 7, bạn cài đặt 4 khi bạn cài đặt Visual Studio 2010. – JMK