Ссылка на загрузку на 32 бита http://releases.ubuntu.com/lucid/ubuntu-10.04.4-server-i386.iso
загрузка запускается автоматически.
Проверьте пространства имен вокруг Microsoft.CSharp.CSharpCodeProvider и System.CodeDom.Compiler.
Скомпилируйте коллекцию файлов .cs
Если быть довольно простым, например http://support.microsoft.com/kb/304655
Будет ли иметь значение, что я загружаю классы с одинаковыми именами в один и тот же процесс?
Вовсе нет. Это просто имена.
экземпляр класса, унаследованного от LevelController.
Загрузите созданную вами сборку, например, Assembly.Load и т. Д. Запросите тип, который вы хотите создать, с помощью отражения. Получите конструктор и вызовите его.
Ну, вы же хотите иметь возможность редактировать на лету, верно? это ваша цель, не так ли?
Когда вы компилируете сборки и загружаете их, теперь есть способ выгрузить их, если вы не выгружаете свой AppDomain.
Вы можете загружать предварительно скомпилированные сборки с помощью метода Assembly.Load, а затем вызывать точка входа через отражение.
Я бы рассмотрел подход динамической сборки. Где вы через свой текущий домен приложений говорите, что хотите создать динамическую сборку. Так работает DLR (среда выполнения динамического языка). С помощью динамических сборок вы можете создавать типы, реализующие некоторый видимый интерфейс, и вызывать их через него. Обратной стороной работы с динамическими сборками является то, что вы должны сами предоставить правильный IL, однако вы не можете просто сгенерировать его с помощью встроенного компилятора .NET. Бьюсь об заклад, в проекте Mono есть реализация компилятора C #, которую вы, возможно, захотите проверить. У них уже есть интерпретатор C #, который считывает исходный файл C #, компилирует его и выполняет, и это определенно обрабатывается через API System.Reflection.Emit.
Я не уверен насчет сборки мусора здесь, потому что когда речь идет о динамических типах, я думаю, что среда выполнения не выпускает их, потому что на них можно ссылаться в любое время. Только если сама динамическая сборка уничтожена и не существует ссылок на эту сборку, было бы разумно освободить эту память. Если вы повторно генерируете большой объем кода, убедитесь, что память в какой-то момент собрана сборщиком мусора.
У них уже есть интерпретатор C #, который считывает исходный файл C #, компилирует его и выполняет, и это определенно обрабатывается через API System.Reflection.Emit.Я не уверен насчет сборки мусора здесь, потому что когда речь идет о динамических типах, я думаю, что среда выполнения не выпускает их, потому что на них можно ссылаться в любое время. Только если сама динамическая сборка уничтожена и не существует ссылок на эту сборку, было бы разумно освободить эту память. Если вы повторно генерируете большой объем кода, убедитесь, что память в какой-то момент собрана сборщиком мусора.
У них уже есть интерпретатор C #, который считывает исходный файл C #, компилирует его и выполняет, и это определенно обрабатывается через API System.Reflection.Emit.Я не уверен насчет сборки мусора здесь, потому что когда речь идет о динамических типах. Я думаю, что среда выполнения не выпускает их, потому что на них можно ссылаться в любое время. Только если сама динамическая сборка уничтожена и не существует ссылок на эту сборку, было бы разумно освободить эту память. Если вы повторно генерируете большой объем кода, убедитесь, что память в какой-то момент собрана сборщиком мусора.
Не выпускайте их, потому что на них можно ссылаться в любое время. Только если сама динамическая сборка уничтожена и не существует ссылок на эту сборку, было бы разумно освободить эту память. Если вы повторно генерируете большой объем кода, убедитесь, что память в какой-то момент собрана сборщиком мусора. Не выпускайте их, потому что на них можно ссылаться в любое время. Только если сама динамическая сборка уничтожена и не существует ссылок на эту сборку, было бы разумно освободить эту память. Если вы повторно генерируете большой объем кода, убедитесь, что память в какой-то момент собрана сборщиком мусора.