Làm thế nào để khắc phục sự cố một addin VSTO không tải?


76

Phần bổ trợ VSTO Outlook của tôi đột nhiên ngừng hoạt động trên một máy của khách hàng (nó không tải, không có thông báo lỗi) và tôi đang gặp khó khăn với việc khắc phục sự cố. Máy là Windows 7 x86, Outlook 2007. Phần bổ trợ được viết bằng Visual Studio 2008 và sử dụng VSTO 2005 với PIA 2003 (vì chúng tôi cũng cần hỗ trợ cả Outlook 2003). Nó hoạt động hoàn toàn tốt trên các máy khác.

Đây là những gì tôi đã cố gắng để có được kết quả khắc phục sự cố hữu ích:

Không có gì. Bổ trợ sẽ không tải mà không đưa ra bất kỳ dấu hiệu nào về lý do. Tôi cũng đã kiểm tra "các nghi phạm thông thường" (chính sách CAS, cài đặt PIA, LoadBehavior trong sổ đăng ký, cài đặt lại VSTO và phần bổ trợ).

Một số nhận xét khác:

  • LoadBehaviortrong sổ đăng ký vẫn ở 3.
  • Phần bổ trợ hiển thị là "bị vô hiệu hóa" trong Outlook. Kiểm tra hộp kiểm của nó trong "COM add-in" không có gì (không có lỗi, hộp kiểm được xóa một lần nữa khi nhập biểu mẫu lần thứ hai).
  • Nó hoạt động hoàn toàn tốt trên các máy của khách hàng khác và nó hoạt động hoàn toàn tốt trên máy này. (Không, khách hàng không thể cho tôi biết những gì đã thay đổi trên máy của họ.)
  • Tôi có một Trace.WriteLinethông báo ở đầu mã của mình (dòng đầu tiên trong ThisAddIn_Startuptrình xử lý), không đạt được (tôi đã kiểm tra bằng DebugView ). Do đó, lý do không tải không phải là ngoại lệ trong phần bổ trợ của tôi mà là do VSTO không tải được phần bổ trợ hoặc của Outlook để tải VSTO.

Thay vì gỡ lỗi ngẫu nhiên hơn ("thử cái này ...", "thử cái đó ..."), tôi thực sự muốn buộc Outlook và / hoặc VSTO cho tôi biết điều gì sai , tức là để cung cấp cho tôi một thông báo lỗi hữu ích chỉ không làm gì khi cố gắng kích hoạt add-in. Có ý kiến ​​gì không?


9
Câu hỏi này là về VSTO cho Outlook-Add-In, nhưng vấn đề là vấn đề chung của Office. Câu hỏi và câu trả lời của nó đã giúp tôi với Phần bổ trợ Excel 2010.
Dirk Brockhaus

2
1 để giới thiệu tôi vào biến môi trường VSTO_SUPPRESSDISPLAYALERTS
Andy McCluggage

1
@Heinzi - cảm ơn bạn đã đặt câu hỏi này, tôi đã thêm hầu hết các giải pháp khác giúp cải thiện mọi người. Người tàn tật có thể dễ dàng sửa chữa trừ khi nó xảy ra trên Citrix ...
Jeremy Thompson

Vui lòng xem điều này cho Outlook 2007 thay đổi LoadBehavior thành 0: stackoverflow.com/questions/7691372/…
Alexandru

Bạn đã kiểm tra tệp kê khai có ở đúng vị trí không? Đồng thời kiểm tra xem mục đăng ký của Phần bổ trợ đó có hiện diện hay không trong cả hai nhánh, HKLM & HKCU.
Ajit Medhekar

Câu trả lời:


53

Bạn đã thử bật lại bổ trợ này chưa? Nó sẽ không chạy sau nó trong hàng đợi bị vô hiệu hóa. Sau khi bạn bật lại nó từ màn hình bổ trợ bị vô hiệu hóa, sau đó bạn có thể chọn hộp trong màn hình COM-AddIn để tải nó, sau đó sẽ nhắc bạn chi tiết hơn vì bạn đã đặt VSTO_SUPPRESSDISPLAYALERTSbiến về những gì có thể đã xảy ra trong lần đầu tiên. địa điểm.


5
Đó chính xác là vấn đề: Tôi chọn hộp trong màn hình COM-AddIns, nhấp vào OK, vào lại màn hình COM-AddIns và hộp này lại được bỏ chọn. Không có bất kỳ thông báo lỗi nào xuất hiện.
Heinzi

3
Ý tôi là kiểm tra hàng đợi bổ trợ bị vô hiệu hóa (không phải bổ trợ chưa được kiểm tra của bạn). Trong loại bổ trợ, hãy thả xuống mục cuối cùng trong danh sách. Nó giống như luyện ngục cho các phần bổ trợ có khả năng xấu.
vườn

2
+1, tất nhiên là bạn đúng. Xin lỗi vì đã đọc sai câu trả lời của bạn lần đầu tiên (downvote không phải từ tôi, btw). Tôi sẽ đánh dấu câu trả lời của bạn là câu trả lời, nhưng tôi cũng sẽ giữ câu trả lời của mình ở đây, vì nó dài dòng hơn một chút.
Heinzi

1
Nó xuất hiện nếu plugin bị lỗi, nó sẽ được thêm vào các plugin bị vô hiệu hóa. Tôi không chắc liệu plugin bị lỗi quá nhiều lần hay Outlook đã xác định rằng loại lỗi của chúng đủ nghiêm trọng, dù sao thì trước tiên bạn phải xóa nó khỏi đó. Cố gắng kích hoạt nó nếu không sẽ không hoạt động.
The Muffin Man

1
Nếu bạn vẫn gặp sự cố, hãy thử gói mọi thứ trong ứng dụng và bắt đầu thử.
The Muffin Man

56

Đây là một chút chi tiết hơn về giải pháp của RobertG5 (quá dài cho một nhận xét):

Vấn đề là phần bổ trợ này đã bị Outlook vô hiệu hóa . Như tôi đã biết, đó là một cái gì đó khác với kịch bản không tải "thông thường". Chìa khóa để nhận ra điều này là nhận thấy rằng phần bổ trợ không hiển thị trong Phần bổ trợ Ứng dụng Không hoạt động , mà là trong Phần bổ trợ Ứng dụng bị Vô hiệu hóa . Điều đó tạo ra sự khác biệt: Trong trường hợp thứ hai, chỉ cần chuyển đến màn hình COM-AddIn và đánh dấu vào hộp kiểm không làm gì cả. (Tôi đoán một hộp thông báo hay "Bạn không thể tải bổ trợ này vì nó đã bị vô hiệu hóa" sẽ là quá nhiều để hỏi ... thở dài .)

Vì vậy, làm cách nào để kích hoạt lại một bổ trợ bị tắt cứng?

  1. Trong hộp Quản lý , thay đổi Phần bổ trợ COM thành Phần bổ trợ bị Vô hiệu hóa , sau đó bấm Bắt đầu.
  2. Chọn phần bổ trợ và nhấp vào Bật . Nhấp vào Đóng .

OK, bây giờ bổ trợ có thể được tải lại:

  1. Trong hộp Quản lý , thay đổi Phần bổ trợ bị Vô hiệu hóa thành Phần bổ trợ COM , sau đó bấm Bắt đầu.
  2. chọn hộp kiểm bên cạnh bổ trợ bị tắt. Bấm OK .

Tham khảo: http://msdn.microsoft.com/en-us/library/ms268871.aspx


3
Tuyệt quá. Cảm ơn bạn đã tham khảo. Tôi thêm rằng đối với các ứng dụng Microsoft Office 2003, danh sách các phần bổ trợ bị vô hiệu hóa được đặt trong menu "Help-About".
Boogier

47

Tôi biết điều này đã cũ nhưng vì nhiều lý do khác nhau, gần đây tôi đã khắc phục sự cố Phần bổ trợ Office không tải.

Nó đã ngốn rất nhiều thời gian nên tôi nghĩ tôi sẽ chia sẻ, vì vậy nếu bổ trợ của bạn không tải hoặc nó không hiển thị hoặc v.v. vui lòng thử các giải pháp này.

1. Bổ trợ không được tải.

Không được tải. Đã xảy ra lỗi thời gian chạy trong quá trình tải Phần bổ trợ COM.

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

Sự cố là do thiếu .Net framework 3.5 hoặc 4.0.

Lưu ý: Nếu phiên bản Office là 64-bit (x64), tôi chỉ cần .Net 4.0. Tuy nhiên, nếu phiên bản văn phòng là 32-bit (x86), tôi cũng gặp lỗi sau khi cài đặt .Net 4.0. Theo dõi bài viết này , tôi đã cài đặt .Net 3.5 và sau đó nó hoạt động trên Office x86!

Ngoài ra cần cài đặt mẫu VSTO Runtime 3.0 tại đây .

2. Phần bổ trợ không được tải.

Kiểm tra kỹ xem bạn đã viết đúng chính tả các khóa đăng ký chưa. Đôi khi tôi nhập Behavior nhưng theo cách viết tiếng Mỹ là Behavior, vì vậy hãy kiểm tra kỹ "LoadBehavior"

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

Cũng đảm bảo "LoadBehavior" là 3, để biết danh sách các giá trị, hãy xem http://msdn.microsoft.com/en-us/library/vstudio/bb386106.aspx#LoadBehavior

3. Phần bổ trợ không hiển thị.

Bạn có thể hiển thị phần bổ trợ bằng cách đi tới Excel> Tệp> Tùy chọn> Phần bổ trợ> chọn danh sách thả xuống Quản lý và đặt nó thành Phần bổ trợ COM> Nhấp vào ĐI. Trong hộp thoại COM Add-in, hãy đảm bảo rằng Add-In được đánh dấu.

4. Bổ trợ đã bị tắt.

Ngoài ra, bổ trợ có thể bị ẩn vì nó đã bị vô hiệu hóa. Bạn có thể bật phần bổ trợ này bằng cách đi tới Excel> Tệp> Tùy chọn> Phần bổ trợ> chọn danh sách thả xuống Quản lý và đặt nó là Tắt và nhấp vào ĐI. Chọn Phần bổ trợ đã bị tắt và nhấp vào Bật.

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

5. Công thức do người dùng xác định trong ExcelDNA không hiển thị chính xác

Thay vì nhìn thấy giá trị ô bạn thấy: #NAME?

Đặt khóa đăng ký sau:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options\OPEN:

Với giá trị chính xác:

/R "C:\Program Files\XYZ\XYZ Addin\ExcelDNA.XYZAddIn.xll"

6. HANGS trong Excel sau khi hiển thị hộp thư

Bật lại cài đặt ứng dụng:

xlApp.ScreenUpdating = true;
xlApp.DisplayAlerts = true;
xlApp.Calculation = XlCalculation.xlCalculationAutomatic;
xlApp.UserControl = true;
xlApp.EnableEvents = true;

7. Khắc phục sự cố thêm

Bật tệp nhật ký VSTO của bạn bằng cách thêm thông tin sau vào các biến môi trường hệ thống của bạn:

NAME: VSTO_LOGALERTS
VALUE: 1

Có thể có một lỗi ngoại lệ là lý do tại sao bổ trợ của bạn không tải.

Bạn có thể kiểm tra nguồn này để biết thêm thông tin về ghi nhật ký và cảnh báo VSTO, nhưng về bản chất, bạn thay đổi hai giá trị biến môi trường tùy thuộc vào những gì bạn cần làm:

Hiển thị lời nhắc cảnh báo VSTO

Để hiển thị từng lỗi trong hộp thông báo, hãy đặt biến VSTO_SUPPRESSDISPLAYALERTS thành 0 (không). Bạn có thể chặn các thông báo bằng cách đặt biến thành 1 (một).

Ghi các Cảnh báo VSTO vào tệp Nhật ký

Để ghi lỗi vào tệp nhật ký, hãy đặt VSTO_LOGALERTSbiến thành 1 (một).

Visual Studio Tools for Office tạo tệp nhật ký trong thư mục chứa tệp kê khai ứng dụng. Tên mặc định là .manifest.log. Để dừng lỗi ghi nhật ký, hãy đặt biến thành 0 (không).


4). Phần bổ trợ đã bị vô hiệu hóa. -> điều đó đã làm điều đó cho tôi!
gilu

Managecần được thiết lập để Disabled Itemstrở thành người khởi xướng cho tôi. cám ơn!
ΩmegaMan

7

Tôi sẽ đề xuất sử dụng một công cụ của Microsoft để chẩn đoán các sự cố bổ trợ được gọi là AddinSpy .


Sau khi thử tất cả mọi thứ, công cụ này đã làm việc cho tôi. Hóa ra rằng bổ trợ đang được tải nhưng một số phụ thuộc khác (một dll) không được tải vì "Hợp ngữ này được xây dựng bởi thời gian chạy mới hơn thời gian chạy đang được tải và không thể tải được". AddinSpy đã giúp tôi nhận được thông báo lỗi đó.
floatfrisbee

Nó thực sự đáng thất vọng đó là một liên kết chết. Tôi nghĩ rằng điều đó sẽ giúp tôi giải quyết vấn đề của mình.
RubberDuck

Bạn có thể muốn tìm kiếm vị trí tải xuống. Đây là trang để xem nó trông như thế nào: msdn.microsoft.com/en-us/library/cc984533%28v=office.12%29.aspx
Cédric Guillemette

1
Nếu bạn không ngại tự mình xây dựng nó, nguồn (không chính thức) cho AddInSpy có sẵn từ GitHub: github.com/NetOfficeFw/AddInSpy
Jon Iles

1

Thật buồn cười cho tôi, tôi đã thử khởi động lại. Đã sửa nó cho tôi. Tuy nhiên, lý do nó đã sửa nó cho tôi, là tôi có một Excel.exe giả mạo đang chạy ẩn. Addin không khởi động do ứng dụng excel khác này đang chạy (tôi đang di chuyển ứng dụng MSAccess sang VSTO), vì vậy Access đã ẩn ứng dụng tự động hóa đang mở.

Tóm lại, nếu addin của bạn không khởi động, hãy kiểm tra nhanh để đảm bảo rằng không có ứng dụng Excel nào khác đang chạy. Tất nhiên, điều này chỉ áp dụng khi bạn đang cố gắng cài đặt / thiết lập và chạy một thiết bị hoàn toàn mới.

(Tôi đã sử dụng liên kết này) https://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/


1

Ở đây cũng có một khả năng khác là tại sao bạn không nhận được phản hồi ngay cả khi các Biến môi trường được đề cập ở trên được đặt. Tôi nhận thấy nếu bạn gặp lỗi này sau khi cài đặt (không phải VSTO trước đó đã hoạt động), bạn cũng nên kiểm tra lại sổ đăng ký và "Tệp kê khai" mục nhập nếu có.

Trong khi Jeremy Thompson chỉ ra Sổ đăng ký trong dấu gạch đầu dòng Thứ hai, anh ấy không hiển thị mục nhập Tệp kê khai có thể là một phần của cài đặt đăng ký của bạn. Nếu mục nhập Tệp kê khai của bạn không trỏ đến đúng đường dẫn và tệp, nó sẽ hiển thị trong danh sách Bổ trợ với mục nhập "Không được tải" .

Ở đây chúng ta thấy một mục nhập không hợp lệ chỉ trỏ đến tệp VSTO duy nhất, không có đường dẫn. nhập mô tả hình ảnh ở đây

Điều này sẽ khiến AddIn của bạn trông giống như nó được tải với các lỗi, nhưng không có lỗi nào xuất hiện và xuất hiện cho bạn và khiến mọi thứ trở nên khó chịu. Vì vậy, nó sẽ như thế này bên dưới, để ý mục địa điểm bên dưới cũng không hiển thị đường dẫn. nhập mô tả hình ảnh ở đây

Sửa mục nhập bằng cách đặt đường dẫn thích hợp cùng với tên tệp và nó sẽ sửa lỗi này.

Việc thiếu lỗi mà tôi cho rằng xuất phát từ thực tế là ban đầu bạn không chỉ vào gì, vì vậy nó liệt kê AddIn vì nó nằm trong sổ đăng ký, mặc dù không có gì để tải.


0

Cuối cùng tôi đã dụ được Word nói với tôi:

    Microsoft.VisualStudio.Tools.Applications.Runtime.CannotCreateStartupObjectException: 
Could not create an instance of startup object blaghblagh ---> 
System.TypeInitializationException: The type initializer for 'foo' threw an exception. ---> 
System.IO.FileNotFoundException: Could not load file or assembly 'blah' or one of its dependencies. 
The system cannot find the file specified.

Sau đó, nhờ [1], FusLogvw đã nhanh chóng giải quyết vấn đề cho tôi.

[1] Không thể tải tệp hoặc lắp ráp hoặc một trong các phụ thuộc của nó

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.