2012-01-27 29 views
16

Tôi đang sử dụng Visual Studio 2010, ứng dụng của tôi có một kiến ​​trúc sư lớp multiu,Visual Studio 2010 tự động gắn với quá trình

MainUI, WCFService, BLL và DAL

MainUI tôi thông báo cho WCF và WCF tiếp tục liên lạc với BLL và DAL, bất cứ khi nào tôi cần phải gỡ lỗi BLL và DAL, trước tiên tôi cần phải đính kèm WCF như là một quá trình trong Visual studio (mọi lúc). Làm thế nào tôi có thể tự cứu mình khỏi rắc rối này.

Làm cách nào tôi có thể thiết lập studio trực quan theo cách tự động đính kèm dịch vụ và tôi có thể gỡ lỗi ứng dụng của mình một cách dễ dàng.

Cảm ơn

+1

Bạn đã cân nhắc ghi macro và ràng buộc nó thành một đoạn cắt ngắn? – Strelok

+0

Đây vẫn là quy trình thủ công để sử dụng phím tắt mọi lúc tôi thực thi ứng dụng và muốn gỡ lỗi ứng dụng, một thứ hoàn toàn tự động là những gì tôi muốn. – MegaMind

+0

là bạn biên dịch và chạy tất cả các dự án này từ bên trong Visual Studio? (bao gồm WCFService)? Bạn do đó khởi động lại WCFService của bạn cho mỗi biên dịch? – wal

Trả lời

15

Định cấu hình giải pháp của bạn để khởi động đa dự án. Tôi làm điều này cho một ứng dụng tương tự. VS khởi động WCF và máy khách tự động và tôi có thể thiết lập các điểm ngắt trong một trong hai.

Thứ tự khởi động là thứ tự bạn chọn dự án.

Nhấp chuột phải vào giải pháp của bạn và chọn 'chọn dự án khởi động'. Sau đó chọn nhiều dự án khởi động và chọn dự án.

+0

Cảm ơn, điều này hoạt động như một nét duyên dáng, sự trục trặc duy nhất là bất cứ khi nào tôi chạy ứng dụng của tôi, cửa sổ trình duyệt bắt đầu tự động (khi chúng tôi thiết lập dự án wcf là khởi động), có anyway tôi có thể tránh điều đó không? – MegaMind

+0

Xin chào Rob, bạn vui lòng giải quyết phần câu đố cuối cùng để thoát khỏi cửa sổ trình duyệt mỗi khi tôi thực hiện dự án – MegaMind

+1

kiểm tra cài đặt dự án của dự án dịch vụ wcf: có tùy chọn để chọn nội dung không thích hợp khi khởi động, chỉ cần chọn "không có gì". – eFloh

1

Hãy thử sử dụng System.Diagnostics.Debugger.Break() trong mã. Nếu một trình gỡ lỗi không được đính kèm, sau đó chạy mã đó sẽ yêu cầu đính kèm một trình gỡ lỗi và bạn có thể chọn cá thể hiện có.

+0

Nhưng tôi vẫn phải đính kèm nó, nó không tự động đính kèm – MegaMind

0
  1. Trong trang thuộc tính cho dự án dịch vụ wcf, hãy chọn tab Web.
  2. Chọn 'Bắt ​​đầu chương trình bên ngoài' để bắt đầu hành động và chọn MainUI.exe.
  3. Đặt thư mục hoạt động làm thư mục MainUI.exe nằm trong (có thể là thư mục bin).
  4. Đặt điểm ngắt và nhấn f5 để bắt đầu gỡ lỗi.
+0

Tôi đã thử nó nhưng nó không hoạt động – MegaMind

0

Nếu tôi hiểu đúng, Macro có thể câu trả lời:

trong Vs:

  1. Tools-> Macros-> kỷ lục TemporarilyMacro (Ctrl + shift + r)
  2. Đính kèm VS để quy trình như bình thường (ctrl + alt + p)
  3. Dừng ghi macro (ctrl + shift + r)
  4. Đi tới Xem-> Cửa sổ khác-> Macro Explorer (CTRL + F8)
  5. tìm bạn Tạm thời Macro (ở đâu đó trong MyMacros-> RecordingModule) và đổi tên nó
  6. Bây giờ, đi đến Tools-> Options-> Bàn phím và tìm bạn vĩ mô (trong "Show lệnh chứa tên viết của bạn macro)
  7. trong "chìa khóa Press shortcut" ràng buộc nó vào một số phím tắt (i có vĩ mô của tôi trong tổ hợp phím CTRL + SHIFT + K;))
  8. Đẩy OK
  9. Be Happy
+0

Thaven, tôi biết Macro sẽ làm điều này, nhưng tôi vẫn phải sử dụng phím tắt mọi lúc tôi thực hiện các ứng dụng, tôi không muốn làm điều đó, Vui lòng đề nghị một cái gì đó khác – MegaMind

0

Bạn đã thử sử dụng WCFSvcHost.EXE đi kèm với Visual Studio để khởi chạy dịch vụ BLL và DAL? Có một tập tin trợ giúp với nó. Tệp trợ giúp nói rõ nhất, "Máy chủ dịch vụ Windows Communication Foundation (WCF) (wcfSvcHost.exe) cho phép bạn khởi động trình gỡ lỗi Visual Studio (F5) để tự động lưu trữ và kiểm tra dịch vụ bạn đã triển khai. WCF Test Client (wcfTestClient.exe) hoặc ứng dụng khách của riêng bạn, tìm và sửa bất kỳ lỗi nào có thể xảy ra. " Cài đặt mặc định là C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE. Bạn có thể cấu hình nó để sử dụng ứng dụng MainUI của bạn như là khách hàng. Tệp trợ giúp WcfSvcHost.chm trong cùng một thư mục có một phần để sử dụng một máy khách tùy chỉnh trong các Kịch bản để sử dụng Máy chủ Dịch vụ ECF. Nếu bạn thích ở đây là liên kết để trợ giúp trên trang web MS: Using WCF Service Host (wcfSvcHost.exe).

4

Làm cách nào để bắt đầu quá trình và đính kèm nó vào Visual Studio 2010 với EnvDTE (Phiên bản có liên quan).

//c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\EnvDTE.dll 
using Process = EnvDTE.Process; 
System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = System.AppDomain.CurrentDomain.BaseDirectory + @"\YourProcess.exe"; 
//Start the process 
p.Start(); 
//Wait for process init 
System.Threading.Thread.Sleep(1000); 

bool attached = false; 
//did not find a better solution for this(since it's not super reliable) 
for (int i = 0; i < 5; i++) 
{ 
    if (attached) 
    { 
     break; 
    } 
    try 
    { 
     EnvDTE.DTE dte2 = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0"); 
     EnvDTE.Debugger debugger = dte2.Debugger; 
     foreach (Process program in debugger.LocalProcesses) 
     { 
      if (program.Name.Contains("YouProcess.exe")) 
      { 
       program.Attach(); 
       attached = true; 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     //handle execption... 
    } 
} 
0

Nếu đây là dịch vụ lưu trữ WCF tự lưu trữ, bạn cần phải cấu hình máy chủ WCF hoặc điều khiển cửa sổ. Khi bạn đã chạy trong giao diện điều khiển bật, bạn có thể bắt đầu gỡ lỗi từ studio trực quan.

Tạo cài đặt ứng dụng có tên "RunInConsole". Phục vụ phương pháp khởi động máy chủ của bạn, có đoạn mã sau:

public class MyWindowsService : ServiceBase 
{ 
    public static void Main(string[] args) 
    { 
     // if configuration says to run in the console, run the service in a console app. otherwise, use windows 
     // service to host application 
     if (ConfigurationManager.AppSettings["RunInConsole"] == "true") 
     { 
      using (ServiceHost host = new ServiceHost(typeof(MyService))) 
      { 
       host.Open(); 
       Console.WriteLine("Press <Enter> to terminate the Host application."); 
       Console.ReadLine(); 
      } 
     } 
     else 
      ServiceBase.Run(new MyWindowsService()); 
    } 

} 

Trên tất cả các môi trường khi triển khai đến, bạn sẽ luôn luôn có thiết lập cấu hình này đặt thành sai hoặc khác dịch vụ sẽ thất bại để bắt đầu, nhưng khi gỡ lỗi tại địa phương bạn đặt nó thành true.

0

Cá nhân tôi thích sử dụng Debugger.Launch() như đề xuất ở đây in this thread, bởi vì nó không cần tài liệu tham khảo cho các DTE (đó là IDE cụ thể và phải được tham chiếu một cách rõ ràng vào dự án sẽ được sử dụng)

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