相关疑难解决方法(0)

从生成它的应用程序中调试生成的.NET程序集

简而言之:如何在生成程序上调试调试会话期间生成的代码?(见下面的代码)

我面临以下问题:我想从生成它的应用程序调试动态生成/编译的代码.我提供了一个简单的例子来澄清它.这个例子不需要调试!我真正的应用程序生成更多的行和代码,真正证明调试,相信我:-)我想知道是否有一种方法来调试或放置断点HelloWorld.单步调用InvokeMethod调用不起作用.也许解决方案涉及在调用站点对生成的程序集进行代码修改.

我已经看了很多问题(例如在Visual Studio .NET中调试动态加载的程序集),但没有一个有助于解决问题(如果可以解决的话?)

我从http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=118中获取代码作为基础并修复了已废弃的调用.除此之外,我在内存中即时生成了程序集,并且调用运行良好.我明确生成了一个包含Debug信息的程序集,这给了我希望:为什么在没有调试的情况下会有选项呢?

using System;
using System.Text;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;

namespace DynamicAssembly
{
    class CreateCompileExecute
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Creates a text file to store the new class
            StringBuilder builder = new StringBuilder();
            builder.AppendLine("using System;");
            builder.AppendLine("namespace CSharpFriendsRocks");
            builder.AppendLine("{");
            builder.AppendLine("class CSharpFriends");
            builder.AppendLine("{");
            builder.AppendLine("public CSharpFriends() {" +
                " Console.WriteLine(\"The CSharpFriends type is constructed\"); }");
            builder.AppendLine("public void HelloWorld() {" +
                " Console.WriteLine(\"Hello World - CSharpFriends.Com …
Run Code Online (Sandbox Code Playgroud)

.net c# debugging code-generation codedom

14
推荐指数
1
解决办法
5285
查看次数

调试使用Mono.CSharp.Evaluator编译的代码

我正在使用Mono.CSharp Evaluator为我的Windows应用程序提供基本脚本功能.

理想情况下,我希望能够通过将Debugger.Break函数插入到脚本代码中来调试和逐步执行在应用程序中创建的脚本.

可以使用CSharpCodeProvider执行此操作,如下所述:如何调试/中断编码编译的代码,但我似乎无法找到有关如何使用Evaluator执行此操作的任何内容.

我已经尝试在CompilerSettings中设置GenerateDebugInfo标志和OutputFile,但是没有太多运气让它运行起来.

c# debugging mono code-generation

5
推荐指数
0
解决办法
414
查看次数

标签 统计

c# ×2

code-generation ×2

debugging ×2

.net ×1

codedom ×1

mono ×1