代码之家  ›  专栏  ›  技术社区  ›  Stan

从内存资源中生成msbuild

  •  2
  • Stan  · 技术社区  · 14 年前

    msbuild是否可以从纯粹的内存资源中生成一个exe。例如,假设我构建了一个.csproj和两个表单和代码隐藏并保存到内存流,msbuild是否可以使用这些流构建一个exe?

    其目的是除了最后一个exe外,没有任何东西写入磁盘。

    如果有,有没有关于这个主题的好的博客文章或其他参考资料?

    2 回复  |  直到 12 年前
        1
  •  5
  •   Hans Passant    12 年前

    msbuild不创建exe文件,编译器创建。当前没有任何Microsoft编译器支持从内存流编译。codedom提供了一种错觉,但实际上它使用的是磁盘。

    未来版本的C中会有一些东西,计划提供“编译器即服务”功能。当前内部项目名称是Roslyn。这是否会影响构建过程尚不清楚,我对此表示怀疑,但我不知道它将如何与现有编译器集成(如果有的话)。

    Windows的一个关键属性是内存和文件之间只有细微的差别。内存中的任何东西也在一个文件中,例如分页文件。内存只是读取和写入文件数据的一种快速方式。当您读或写一个文件时,实际上是在读/写内存。文件系统缓存。如果它足够大,那么对于大多数C项目来说,编译器将读取相同的内存,而不会碰到磁盘。只有当文件最近没有被读取或写入时,它才会减速。

        2
  •  1
  •   Giorgi    14 年前

    为什么不使用 CodeDomProvider.CompileAssemblyFromSource Method 编译您在内存中保存的代码?