CodeDom在哪里保存生成的.cs文件?我们可以将此位置更改为其他文件夹吗?

里约

我已经成功运行了Codedam示例项目。输出文件位于bin调试文件夹中。

正在生成ac#类文件。我需要在D:/ Temp文件夹中生成此c#类文件,而不会生成C#.cs文件输出的任何可执行文件。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.CodeDom.Compiler;
using System.CodeDom;
using Microsoft.CSharp;
using System.Reflection;


namespace codeDamnSample
{


    public class CCodeGenerator
    {
        CodeNamespace mynamespace;
        CodeTypeDeclaration myclass;
        CodeCompileUnit myassembly;

        public void CreateNamespace()
        {
            mynamespace = new CodeNamespace("mynamespace");
        }
        public void CreateImports()
        {
            mynamespace.Imports.Add(new CodeNamespaceImport("System"));

        }
        public void CreateClass()
        {
            myclass = new CodeTypeDeclaration();
            myclass.Name = "SampleTest:TestBase";
            myclass.IsClass = true;
            myclass.Attributes = MemberAttributes.Public;
            mynamespace.Types.Add(myclass);
        }
        public void CreateMethod()
        {
            CodeMemberMethod mymethod = new CodeMemberMethod();
            mymethod.Name = testMethod;
            CodeTypeReference ctr = new CodeTypeReference();
            //Assign the return type to the method.
            mymethod.ReturnType = ctr;
            //Provide definition to the method (returns the sum of two //numbers)
            CodeSnippetExpression snippet1 = new CodeSnippetExpression("AutomationBase obj = new AutomationBase()");
            //return the value
            CodeSnippetExpression snippet2 = new CodeSnippetExpression("obj.Execute(testCases[0])");
            //Convert the snippets into Expression statements.
            CodeExpressionStatement stmt1 = new CodeExpressionStatement(snippet1);
            CodeExpressionStatement stmt2 = new CodeExpressionStatement(snippet2);
            //Add the expression statements to the method.
            mymethod.Statements.Add(stmt1);
            mymethod.Statements.Add(stmt2);
            //Provide the access modifier for the method.
            mymethod.Attributes = MemberAttributes.Public;
            CodeAttributeDeclaration codeAttrDecl = new CodeAttributeDeclaration("Test");

            mymethod.CustomAttributes.Add(codeAttrDecl);
            //Finally add the method to the class.
            myclass.Members.Add(mymethod);
        }
        public void SaveAssembly()
        {
            myassembly = new CodeCompileUnit();
            myassembly.Namespaces.Add(mynamespace);
            CompilerParameters comparam = new CompilerParameters(new string[] { "mscorlib.dll" });
            comparam.GenerateInMemory = false;
            comparam.GenerateExecutable = false;
            comparam.MainClass = "mynamespace.CMyclass";
            Microsoft.CSharp.CSharpCodeProvider ccp = new Microsoft.CSharp.CSharpCodeProvider();

            String sourceFile;
            ccp.
            if (ccp.FileExtension[0] == '.')
            {
                sourceFile = "SampleTest" + ccp.FileExtension;
            }
            else
            {
                sourceFile = "SampleTest." + ccp.FileExtension;
            }
            var tw1 = new IndentedTextWriter(new StreamWriter(sourceFile, false), "    ");
            ccp.GenerateCodeFromCompileUnit(myassembly, tw1, new CodeGeneratorOptions());
            tw1.Close();

            ccp.CompileAssemblyFromDom(comparam, myassembly);


        }
        public static void generateCod()
        {  
            CCodeGenerator cg = new CCodeGenerator();
            cg.CreateNamespace();
            cg.CreateImports();
            cg.CreateClass();
            cg.CreateMember();
            cg.CreateProperty();
           cg.CreateMethod();

          //  cg.CreateEntryPoint();
            cg.SaveAssembly();
           // Console.ReadLine();
        }


    }


}
帕特里克·霍夫曼

它应将文件保存在当前工作目录中,通常是bin/Debug您正在运行的项目中文件夹。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pouchdb在哪里将附件保存到我们的本地PC?我们可以检查哪个文件夹?

来自分类Dev

在哪里可以找到其他文件夹图标?

来自分类Dev

显示Django在哪里可以找到我的静态文件,以及其他设置文件夹设置

来自分类Dev

在哪里保存 ReactJS 文件?

来自分类Dev

生成的WSDL文件在哪里?

来自分类Dev

运行xmlrunner后将生成的xml文件保存在哪里?

来自分类Dev

码头工人在哪里保存已停止的容器生成的文件?

来自分类Dev

我们可以从虚拟PC保存文件吗

来自分类Dev

Duplicati在哪里保存其日志文件?

来自分类Dev

Chrome主题文件保存在哪里?

来自分类Dev

保存环境变量的文件在哪里?

来自分类Dev

CSV文件保存在哪里?

来自分类Dev

蓝牙接收的文件保存在哪里

来自分类Dev

保存的文件存储在哪里?在Android中

来自分类Dev

汞在哪里保存搁置的文件?

来自分类Dev

Ubuntu在哪里保存文件的用户权限?

来自分类Dev

Prism DebugLogger 在哪里保存日志文件

来自分类Dev

保存文件时元数据在哪里?

来自分类Dev

在哪里保存我的iOS应用的保存文件

来自分类Dev

setFrameAutosaveName方法在哪里保存窗口的位置?

来自分类Dev

我可以隐藏 WebStorm 生成的 .idea 文件夹吗?

来自分类Dev

我的Firefox密码保存在哪里?

来自分类Dev

TortoiseSVN:我在哪里可以查看保存的“更改列表”?

来自分类Dev

将文件夹保存在我的Dropbox帐户中,同时将其移动到硬盘上的其他位置

来自分类Dev

在哪里保存程序的配置并在 Windows 上保存文件?

来自分类Dev

目标c:在哪里将文件保存在文件夹中?

来自分类Dev

Laravel + Nginx:我们可以从/ something和其他文件夹中提供应用程序吗?

来自分类Dev

传输将我的洪流文件保存在哪里?

来自分类Java

我应该在哪里保存创建的文件?

Related 相关文章

  1. 1

    Pouchdb在哪里将附件保存到我们的本地PC?我们可以检查哪个文件夹?

  2. 2

    在哪里可以找到其他文件夹图标?

  3. 3

    显示Django在哪里可以找到我的静态文件,以及其他设置文件夹设置

  4. 4

    在哪里保存 ReactJS 文件?

  5. 5

    生成的WSDL文件在哪里?

  6. 6

    运行xmlrunner后将生成的xml文件保存在哪里?

  7. 7

    码头工人在哪里保存已停止的容器生成的文件?

  8. 8

    我们可以从虚拟PC保存文件吗

  9. 9

    Duplicati在哪里保存其日志文件?

  10. 10

    Chrome主题文件保存在哪里?

  11. 11

    保存环境变量的文件在哪里?

  12. 12

    CSV文件保存在哪里?

  13. 13

    蓝牙接收的文件保存在哪里

  14. 14

    保存的文件存储在哪里?在Android中

  15. 15

    汞在哪里保存搁置的文件?

  16. 16

    Ubuntu在哪里保存文件的用户权限?

  17. 17

    Prism DebugLogger 在哪里保存日志文件

  18. 18

    保存文件时元数据在哪里?

  19. 19

    在哪里保存我的iOS应用的保存文件

  20. 20

    setFrameAutosaveName方法在哪里保存窗口的位置?

  21. 21

    我可以隐藏 WebStorm 生成的 .idea 文件夹吗?

  22. 22

    我的Firefox密码保存在哪里?

  23. 23

    TortoiseSVN:我在哪里可以查看保存的“更改列表”?

  24. 24

    将文件夹保存在我的Dropbox帐户中,同时将其移动到硬盘上的其他位置

  25. 25

    在哪里保存程序的配置并在 Windows 上保存文件?

  26. 26

    目标c:在哪里将文件保存在文件夹中?

  27. 27

    Laravel + Nginx:我们可以从/ something和其他文件夹中提供应用程序吗?

  28. 28

    传输将我的洪流文件保存在哪里?

  29. 29

    我应该在哪里保存创建的文件?

热门标签

归档