gpt4 book ai didi

C# csc 从内存编译源代码

转载 作者:太空狗 更新时间:2023-10-30 01:09:21 28 4
gpt4 key购买 nike

我想从字符串编译 c# 源代码。我知道使用 CodeDom 可以做到这一点,我想知道是否可以使用命令行编译器来做到这一点。例如,假设我将以下代码加载到一个字符串上:

static void Main(string[] args)
{

}

有没有什么方法可以将此代码编译成 C# 可执行文件 (.exe),而无需先将此代码以 C# 类 (.cs) 文件的形式写入我的硬盘?

那是我问题的第一部分。第二部分假设上述情况实际上是不可能的。假设我有三个不同的类(加载到三个单独的字符串上)。我将如何使用命令行编译器将这三个类中的每一个编译成一个通用的可执行文件?我在网上找到了一些例子,但不幸的是,它们似乎很模糊。

非常感谢任何帮助或指向正确方向的指示。

谢谢,埃文

最佳答案

不可以,没有源文件就不能使用 csc.exe。您需要使用 csc.exe 的理由是什么?您是否发现了 CodeDOM 无法正确处理的内容?您没有对应的 CodeDOM 的命令行选项?

C# 团队提到 future 的版本可能会支持 compiler-as-a-service ,其中 csc.exe 将成为编译器 DLL 的精简包装器,您也可以直接调用它。但您仍然需要绕过 csc.exe。

您可以使用 System.CodeDom.Compiler.CompilerParameters让 CodeDOM 为您提供与 csc.exe 相同的结果。检查构建日志以找出 Visual Studio 传递给 csc.exe 的选项。具体来说,体系结构(AnyCPUx86)可能会产生很大的不同,因为它决定了生成的程序集在 Windows 上运行时是否与 32 位 DLL 兼容x64。或者您可以使用 corflags 在编译后修复架构。

关于C# csc 从内存编译源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com