MSBuild из ресурсов памяти - PullRequest
       4

MSBuild из ресурсов памяти

2 голосов
/ 19 октября 2010

Возможно ли для MSBuild создать EXE-файл исключительно из ресурсов памяти. Например, предположим, что я создал .csproj, пару форм и код и оставил их в потоке памяти. Может ли MSBuild использовать эти потоки для создания EXE-файла?

Цель состоит в том, чтобы на диск ничего не записывалось, кроме окончательного EXE.

Если это так, есть хороший пост в блоге или другая ссылка на эту тему?

Ответы [ 2 ]

5 голосов
/ 19 октября 2010

MSBuild не создает EXE-файл, а компилятор.Ни один из компиляторов Microsoft в настоящее время не поддерживает компиляцию из потока памяти.System.CodeDom создает иллюзию этого, но на самом деле использует диск.

В будущей версии C # есть что-то новое, планируется предоставить функцию «компилятор как сервис».Текущее внутреннее название проекта - Roslyn.Повлияет ли это на процесс сборки, я сомневаюсь, но не имею ни малейшего понятия, как он будет интегрирован с существующим компилятором, если вообще будет.

Одним из ключевых свойств Windows является то, что между памятью и файлами существует лишь небольшая разница.Все, что находится в памяти, также находится в файле, например, в файле подкачки.Память - это только быстрый способ чтения и записи данных файла.Когда вы читаете или пишете файл, вы фактически читаете / записываете память.Кеш файловой системы.Если он достаточно большой, то для большинства проектов C # компилятор будет читать ту же самую память, даже не ударяя по диску.Это замедлится только тогда, когда файл не был прочитан или записан в последнее время.

1 голос
/ 19 октября 2010

Почему бы не использовать CodeDomProvider.CompileAssemblyFromSource Method для компиляции кода, который вы держите в памяти?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...