2015-07-10 19 views
7

我開發了一個COM +組件在C#中繼承ServicedComponent。 這裏是如何看起來像:無法進入並調試服務組件源代碼

[Transaction(TransactionOption.Required)] 
    [ClassInterface(ClassInterfaceType.AutoDual)] 
    [EventTrackingEnabledAttribute(true)] 
    [JustInTimeActivation] 
    [ObjectPooling(Enabled = true, MinPoolSize = 10, MaxPoolSize = 30, CreationTimeout = 15000)] 
    [Synchronization] 

    class MyComponent: System.EnterpriseServices.ServicedComponent 
    { 
     [AutoComplete(true)] 
     public string getHello() 
     {//2nd breakpoint 
      ContextUtil.SetComplete(); 
      return "HelloWorld"; 
     } 
    } 

我有另外一個測試項目從我調用此組件。

class Program 
{ 
static void Main(string[] args) 
{ 
MyComponent myComp = new MyComponent(); 
myComp.getHello();//1st Breakpoint 
} 
} 

我無法達到第二個斷點。在我切換到VS 2012之前,這是工作的。奇怪的是,切換到2012年後,它不再在VS 2010中工作。

我已經試過了,

  • 附加到進程
  • 未選中「啓用僅我的代碼」中的調試設置

是否有人可以從這裏得到的方向嗎?

更新1

由邁克給出的鏈接,我想Symchk的我在DLL和PDB文件都存在相同的文件夾中的DLL。它錯誤地說PDB不匹配或找不到。我不知道如何解決這個錯誤。

回答

5

您可能會遺漏項目中的.pdb文件。

檢查說明此Microsoft鏈接出:https://msdn.microsoft.com/en-us/library/yd4f8bd1(vs.71).aspx

+1

當我生成項目,我看到在我的debug文件夾中的.pdb文件。有沒有一種方法可以檢查在調試時是否正確連接? –

+1

這可能不太可能,但另一件可能導致此問題的原因是GAC中存在過時的.dll文件。我不確定您是否可以檢查鏈接器正在使用的內容。我的經驗已經缺失pdb。這裏是關於這個主題的更強大的文章:https://msdn.microsoft.com/en-us/library/windows/desktop/ee416588(v=vs.85).aspx - 對不起,希望我能有更多的幫助 –

+1

感謝您的鏈接,我會通過他們,看看是否有幫助! –