Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中将源文件动态编译成程序集#_C#_.net - Fatal编程技术网

C# 如何在C语言中将源文件动态编译成程序集#

C# 如何在C语言中将源文件动态编译成程序集#,c#,.net,C#,.net,我知道有一个叫做AssemblyBuilder的类,我想我可以用它来传递一个包含C源文件的文件夹,或者传递一个C源文件给它,以便将源代码编译成一个程序集(.dll),然后在配置文件中引用它 我知道csc.exe可以编译C#,我正在寻找一种方法来动态复制它 我不知道如何使用AssemblyBuilder,或者这是否是要使用的错误类,或者我是否应该执行类似以下操作: 你能给我指一下正确的方向吗。你可能想看看 示例代码段: CompilerParameters parms = new Compile

我知道有一个叫做AssemblyBuilder的类,我想我可以用它来传递一个包含C源文件的文件夹,或者传递一个C源文件给它,以便将源代码编译成一个程序集(.dll),然后在配置文件中引用它

我知道csc.exe可以编译C#,我正在寻找一种方法来动态复制它

我不知道如何使用AssemblyBuilder,或者这是否是要使用的错误类,或者我是否应该执行类似以下操作:


你能给我指一下正确的方向吗。

你可能想看看

示例代码段:

CompilerParameters parms = new CompilerParameters
                                           {
                                               GenerateExecutable = false,
                                               GenerateInMemory = true,
                                               IncludeDebugInformation = false
                                           };

            parms.ReferencedAssemblies.Add("System.dll");
            parms.ReferencedAssemblies.Add("System.Data.dll");
            CodeDomProvider compiler = CSharpCodeProvider.CreateProvider("CSharp"); 

            return compiler.CompileAssemblyFromSource(parms, source); 

警告:以这种方式动态生成的程序集不会由垃圾收集器处理。

您不能直接调用
csc.exe
,传递要编译的
.cs
文件的路径的原因是什么?即使这在技术上是可能的(如链接文章中所述)我暗自怀疑你正试图以一种尴尬的方式做一些琐碎的事情。如果您在更高的层次上描述您的用例,可能会得到更好的解决方案。msbuild中使用的项目文件由于其大小而变得不可管理,因此我们正在编写一个替换文件,它可以利用C#的强大功能。要单独使用csc.exe,我们必须与客户一起经历一个变更过程,因为我们所做的所有代码都会被发送到客户网络上的一个中央存储库,在那里构建代码,所有这些代码可能需要长达6个月的时间才能被接受,所以我们希望避免这种情况,因为我们将不得不在6个月内坚持使用msbuild。@Bonner,那么你基本上想为msbuild编写一个替代品吗?本质上是的,但使用C#而不是XML,我们不能使用csc,所以我们需要某种方法来编译C#。我们倾向于用C语言写一些东西。为了做到这一点,我们很想按照另一篇评论中的建议,采用Rosalyn,但目前我们对想法持开放态度。有没有办法解决gc问题?我不知道。我想知道是否有一个聪明的方法来利用罗莎琳。