我创建了一个内联MSBuild任务(如here所述),我想知道是否有办法在Visual Studio中调试它?
我尝试添加对Debugger.Launch()
的调用,确实启动了调试器,但Visual Studio找不到与内联任务中的c#代码对应的源文件。
我现在唯一能想到的就是将代码放入一个真正的程序集中,而不是让它内联。
答案 0 :(得分:1)
有一种方法,但它并不适合经常使用。但它确实有效:
MSBUILDLOGCODETASKFACTORYOUTPUT
并将其设置为1(实际值无关紧要)。这会将生成的代码(也用于编译)转储到一个文本文件中,该文件随机名为guid,位于Path.GetTempPath()稍微短一些就是将你的源代码放在.cs文件中并使用<Code Type="Class" Language="cs" Source="path\to\inline.cs">
而不是片段:你可以省略设置MSBUILDLOGCODETASKFACTORYOUTPUT,因为你已经使用了文件,但你仍然需要重命名它
所以如果你需要这个经常使用一个装配会更短。在my answer here中实现此目的的便捷方式。
顺便说一下,通过查看CodeTaskFactory source,我发现了大部分信息。可以看出它使用CompileAssemblyFromSource。因此,如果您对源进行一些小修改,而不是总是将源代码转储到文件中,那么请使用CompileAssemblyFromFile,它可以开箱即用..