在Unity中调试dll

在Unity中调试dll


项目中用到一个dll,想进入这个dll调试其中的代码,如何做呢?
1.使用ilspy反编译该dll
2.反编译成功后,选择菜单file->save code保存c#代码(包含一个csproj)
3.用visual studio打开2中得到的csproj文件,会打开visual studio工程。
4.反编译得到的代码可能会有一些语法错误,比如反编译会把属性(get,set)反编译成方法,需要我们手动改回属性;
  
  若dll中使用Unity的API,还需要我们添加对UnityEngine.dll的引用:在solution explorer中选择工程,右击,选择add->reference,在打开的窗口中点击browser,从资源管理器中选择UnityEngine.dll。要注意UnityEngine.dll的版本,要跟原dll使用的UnityEngine.dll保持一致


  还有可能原dll使用的.net版本与当前工程使用的.net版本不一致,需要在Project->工程名properties->Application中的Target Framework中修改.net版本。


 5.确认无误后,build solution
 6.在\bin\Debug\中找到生成的dll文件和pdb文件。在Unity的安装文件夹中找到Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe,在命令行中执行该exe,参数为之前我们生成的dll,生成mdb文件
 如果生成mdb文件过程中报错,参考 http://answers.unity3d.com/questions/1020296/pdb2mdbexe-not-working-on-visual-studio-2015.html中回复中提供的方法。使用 https://gist.github.com/jbevain/ba23149da8369e4a966f 这里提供的pdb2mdb.exe,并且将dll文件和pdb文件放在pdb2mdb.exe同一目录下(必须,否则不会生成mdb),在命令行中执行pdb2mdb MyLibrary.dll即可生成MyLibrary.dll.mdb 
 7.将dll文件和mdb文件放到Unity的Assets/Plugins目录下。


 接下来就可以像调试项目源代码那样调试dll了


经研究,调试只能在MonoDevelop中进行。

你可能感兴趣的:(在Unity中调试dll)