2015-07-10 62 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

感谢您的链接,我会通过他们,看看是否有帮助! –