我调试时停止创建本地程序集

时间:2018-01-31 13:11:51

标签: c# .net .net-assembly assembly-resolution

我开发了一个c#类库,我需要使用外部程序进行调试。

所以我设置了#34;启动外部程序"这个项目对我的外部程序,然后我启动调试器。

问题是此程序集也位于此外部程序的root-dir中(作为副本)。 当我启动调试器时,它将加载两个程序集:来自bin-dir的那个和来自外部程序的root-dir的程序集。

结果是TargetInvokationException,因为包含的类型位于两个不同的程序集中。

如何阻止visual studio加载两个程序集?

祝你好运 托拜厄斯

2 个答案:

答案 0 :(得分:0)

如果您在启动外部流程时遇到问题,可以采用其他方式并附加到流程。

  

确保编译dll的调试版本并将.pdb文件与dll一起复制到可执行文件夹中以获得最佳结果

Attach to process

然后,您只需找到要调试的应用程序进程

答案 1 :(得分:0)

我终于做到了这样:

  1. 我创建了一个post-build-event,其中...
    • ...将程序集复制到外部程序
    • ...将程序集复制到每个项目复制其程序集的目录中(并且只创建对这些程序集的引用而不是直接创建任何项目
    • ...删除debug-directory中的程序集
  2. 这是我的剧本:

      robocopy "$(TargetDir)\" "..\..\..\..\..\..\USD" "$(TargetFileName)"
      robocopy "$(TargetDir)\" "..\..\..\..\..\..\USD" "$(TargetName).pdb"
    
    
      robocopy "$(TargetDir)\" "..\..\..\..\..\..\Lib\myassembly1" "$(TargetFileName)"
      robocopy "$(TargetDir)\" "..\..\..\..\..\..\Lib\myassembly1" "$(TargetName).pdb"
    
    del "$(TargetFileName)"
    
          REM ignoriert faulty interpretation of 1 Return-Code from robocopy
          set/A errlev="%25ERRORLEVEL%25 & 24"
          exit/B %25errlev%25
    

    如上所述,我将所有直接项目引用更改为lib目录中的程序集文件。

    现在我可以通过启动外部程序来调试我的项目。不再发生TargetInvokationException。