从源代码动态创建编译的.NET exe?

时间:2010-08-28 16:51:47

标签: c# .net compilation

我需要在基于.NET的EXE中注入一个自定义的,唯一的静态字符串。对于所有意图和目的,假设这是我的PKI的私钥。

我对如何保护C#源代码中的私钥有一些想法,我的问题是如何获取我的.CS文件并根据它创建可执行文件?

2 个答案:

答案 0 :(得分:4)

看看CSharpCodeProvider,基本上可以使用包含源代码的字符串并将其编译为程序集(EXE或DLL),或者如果需要,可以使用内存程序集。

您还可以将codeDOM用于代码生成方面。以'Generating Source Code and Compiling a Program from a CodeDOM Graph'为出发点。

答案 1 :(得分:3)

最简单的方法是调用{#3}},即C#编译器。

例如:(来自上面链接的msdn页面)

csc /out:My.exe File.cs

将从名为My.exe的输入文件生成名为File.cs的可执行文件。

如果您要编译的可执行文件相当复杂,那么保留预编译并且只编译一个在运行时调用方法以获取私钥的DLL可能更简单,因为这将是一个更简单的命令要传递给csc的行。