Visual Studio 2010创建编译代码的应用程序
本文关键字:代码 应用程序 编译 创建 Studio 2010 Visual | 更新日期: 2023-09-27 18:08:53
我希望能够从我创建的另一个应用程序中编译代码。
长故事:
我正在使用SDL从头开始创建一个2D引擎(请不要评论什么是更好的使用)。我了解如何使用SDL库,可以创建简单的游戏。然而,我想在更大的项目上努力,但我需要创建一个应用程序来帮助我组织代码和整个系统。基本上,这个程序是一个编辑器(很像unity或UDK,但当然没有那么高级)。编程与代码编辑器等实际应用程序并不难,但我的问题是,我如何能采取这些代码,并有它编译,运行,和/或导出为exe?(将代码和脚本放入一个架构中进行编译并不是问题,问题在于知道如何编译它)
这对我来说是一个新的想法,谷歌没有给我我想要的结果,所以我决定来StackOverflow,因为我在这里得到了很多问题的答案,而不必问(顺便说一句,你们很棒)。
TL;博士版:
编译另一个自制应用程序的代码。
(我的想法是使用c#作为界面或gui,然后使用C/c++作为实际的引擎)
我的答案是基于我将做的事情(至少在开发期间):使用现有组件。即编辑器和脚本编译器;
编辑器可以使用Avalon Edit
对于你的编译/脚本需要使用CS-Script
使用这些工具,您可以在4-5小时内启动并运行,并且您可以通过一些工作来热插拔实体脚本。只需要一个基本的exe,它可以读取项目的根脚本文件并开始运行它。
地狱,我愿意打赌你甚至可以抓住CS-Script在内存中创建的程序集并保存它以供以后使用。
如果你度过了"制造新引擎-车轮-再发明"阶段,你可以回来支持其他语言。
如果你正在谈论构建一个像Unity这样的视觉编辑环境——它可以承载渲染的视觉效果,游戏引擎变量的UI处理,音频编辑,以及脚本编辑和编译这些脚本,那么你将需要使用像MSBuild这样的东西。
既然你声明你已经控制了项目文件的打包和管理,并且假设你打算构建这个自定义接口来修改由visual studio解决方案引用的文件,那么你所需要做的就是用适当的命令行参数调用MSBuild。
参见:MSBuild (MSDN)
如果你更多地谈论编辑方面,那么也许Visual Studio Shell: Wikipedia说:
Visual Studio 2008引入了Visual Studio Shell,允许开发定制版本的IDE。Visual Studio Shell定义了一组vpackage,这些vpackage提供了任何IDE所需的功能。除此之外,还可以添加其他包来定制安装。shell的隔离模式会在安装包的地方创建一个新的AppId。它们将以不同的可执行文件启动。它旨在为特定语言或特定场景开发自定义开发环境。集成模式将软件包安装到专业/标准/团队系统版本的AppId中,以便工具集成到这些版本中。[16]Visual Studio Shell可以免费下载。
你可以让这个shell调用任何编译器…很多的工作。
您可以看看以下内容:
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true);
parameters.GenerateExecutable = true;
CompilerResults results = csc.CompileAssemblyFromSource(parameters,
@"using System.Linq;
class Program {
public static void Main(string[] args) {
var q = from i in Enumerable.Rnge(1,100)
where i % 2 == 0
select i;
}
}");
results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText));
此代码将编译results
变量中的代码并输出给foo.exe