2011-01-10 29 views
6

Tôi đang sử dụng một số tệp Win32 dll trong Outlook 2007 bổ trợ.Outlook 2007 Addin C# - Đường dẫn khởi động

Vì vậy, tôi đã thêm các dll, với hành động xây dựng "Nội dung" và sao chép vào thư mục cục bộ.

Để có được đường dẫn đến họ, tôi sẽ thường sử dụng:

Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MyDll.dll"); 

Khi xuất bản bởi ClickOnce, Assembly.GetExecutingAssembly không đem lại cho tôi con đường tiêu chuẩn để tất cả các file ClickOnce của tôi. Tệp của tôi nằm trong % appdata% .. \ Local \ Apps \ 2.0, nhưng bản lắp ráp nằm ở % appdata% .. \ Local \ assembly.

Có cách nào tốt hơn để có được đường dẫn đến các dll này từ bên trong một bổ trợ Outlook được triển khai bởi ClickOnce không?

+0

Cũng đã thử Application.StartupPath, nhưng điều đó mang lại cho tôi đường dẫn đến exe của Outlook. – jonathanpeppers

Trả lời

2

Mã này được đem lại cho tôi con đường đúng ngay bây giờ:

string path = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "MyDll.dll"); 

tôi đã phải sử dụng SetupInformation khi phân tích đối số dòng lệnh, và một số lỗi dẫn tôi đến khách sạn này.

Tôi sẽ đăng lại nếu nó mang lại cho tôi bất kỳ sự cố nào, vì chúng tôi sẽ cần cài đặt trên một số máy và xem điều gì sẽ xảy ra.

+0

Bạn đang sử dụng một dự án thiết lập để triển khai điều này? Bạn có thể chỉ định một thư mục trong hệ thống tệp và chỉ định đường dẫn trực tiếp. – bdwakefield

+0

Đó là ClickOnce, nó nói trong câu hỏi của tôi. – jonathanpeppers

0

Bạn đã thử thêm chúng vào làm tài liệu tham khảo chưa? Tôi tin rằng bổ trợ nên biết vị trí nếu bạn đặt chúng theo cách đó. Chỉ cần nhìn vào cách nó xử lý Office Interops (và các tham chiếu khác) khi bạn thêm chúng vào - không cần phải chỉ định, chỉ cần tham chiếu chúng trong mã của bạn.

+0

Đó là các tham chiếu .Net. Bạn không thể làm điều này với Win32 dlls. – jonathanpeppers

+0

Vẫn là một newbie về lập trình C#. điều đầu tiên xuất hiện trong đầu tôi. –

1

Tôi nghĩ rằng đây chính xác là những gì bạn đang tìm kiếm - cách tìm dll bạn đã triển khai với ứng dụng VSTO của bạn.

http://robindotnet.wordpress.com/2010/07/11/how-do-i-programmatically-find-the-deployed-files-for-a-vsto-add-in/

+0

Điều này giống như câu trả lời được chấp nhận của tôi, nhưng dựa trên Assembly.GetExecutingAssembly(), vì vậy tôi nghĩ tôi thích câu trả lời được chấp nhận. – jonathanpeppers

+0

Bất cứ điều gì làm việc cho bạn, anh chàng. Chỉ cần FYI, tôi đã nhận được câu trả lời từ nhóm sản phẩm ClickOnce. – RobinDotNet

Các vấn đề liên quan