C#作为一种脚本语言

7

可能是重复问题:
从非托管代码调用托管.NET代码的最佳方法

我很好奇是否可以在C++本地应用程序中使用C#作为脚本语言。我已经为自己的游戏引擎工作了5年,但从未涉及过脚本方面。我喜欢在Unity中编写不同对象的C#脚本。

我做了一些搜索,但没有找到任何实际有用的东西。

请注意,我的问题与.NET无关,而是与C#作为一种通用语言有关。

只是为了确保,我会声明这一点:我不想从C#调用本地c ++。 我希望反过来。

如果有人能指导我一些资源,我会很感激。


只要你想调用的内容有受管控的接口,这听起来是可行的。 - Jodrell
我认为也许这个链接比建议的重复更合适。虽然我不会说它是一个完全相同的重复。 - James Barrass
2
C#并不是真正设计成脚本语言。如果可能的话,您考虑过使用JavaScript吗?可以研究一下Google的V8引擎(我相信它已经是C++了),您可以从JavaScript中挂接本地的C++对象...诚然,JavaScript是为Web设计的,但它可以适应其他应用程序。 - Matthew Layton
这很简单。只需将代码编译为dll,然后将编译后的文件作为引用加载即可。 - Security Hound
IronPython、IronRuby或V8(ECMAScript)比C#更适合于需要动态脚本的情况。 - Tony Hopkinson
3个回答

6

是的,你想要做的就是在你自己的应用程序中托管CLR。这里有一篇MSDN文章介绍了如何进行操作。

http://msdn.microsoft.com/en-us/magazine/cc301479.aspx

该文章的作者还出版了一本涵盖所有方面的书籍。一旦你在应用程序中运行起CLR,如果你需要真正的脚本功能,你将需要动态编译代码,cirrus提供了一些链接来介绍如何实现此功能。

你不可避免地也需要将你主要应用程序的部分公开到CLR命名空间中。否则,你将无法访问主机应用程序的任何特定功能。

编辑:当我说“真正的脚本”时,我的意思是你在运行时使用扩展名为.cs的文本文件作为你的脚本。事先编译它们然后将带有托管应用程序的.dll包含进去会更高效,不过你可以两种方式都做。


1
CLR Hosting Center文档链接:http://msdn.microsoft.com/zh-cn/library/dd380850.aspx - PaulPerry

1

0

你可能想查看Rickard Nilsson的CSRepl源代码。这是一个C#交互式解释器。它不会托管CLR,因为它是托管的,但可以创建C#脚本环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接