gpt4 book ai didi

c# - 使用 CSharpCodeProvider 编写 XNA C# 脚本

转载 作者:太空狗 更新时间:2023-10-30 01:09:29 26 4
gpt4 key购买 nike

我正在使用 XNA 开发一款 RPG 风格的游戏,我正在努力实现一个脚本引擎。

我已经遵循了一些教程来尝试让它工作。目前我从一个 XML 文件中读取了以下内容:

namespace MyGame
{
public class EngagedCode : ScriptingInterface.IScriptType1
{
public string RunScript()
{
ChangeFrame( 2 );
}
}
}

在我成功将其放入项目后,我尝试使用以下代码对其进行编译:

Microsoft.CSharp.CSharpCodeProvider csProvider = new Microsoft.CSharp.CSharpCodeProvider();

CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false; //DLL
options.GenerateInMemory = true;
options.IncludeDebugInformation = true;

options.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);

CompilerResults result = csProvider.CompileAssemblyFromSource(options, code);

然而,在这一点上我总是得到以下错误:

'result.CompiledAssembly' threw an exception of type 'System.IO.FileNotFoundException'

系统好像找不到我编译的.dll,不知道为什么。我不知道如何克服这个错误。有人有什么建议吗?

最佳答案

即使您在内存中生成它,它仍然会将 .dll 写入磁盘,除非您有编译错误,然后您会得到这个无用的 System.IO.FileNotFoundException。所以很可能你有编译错误。

为了消除这些编译错误,您需要添加以下内容。

CompilerResults results = csProvider.CompileAssemblyFromSource(parameters, textBox1.Text);

if (results.Errors.Count > 0)
{
foreach (CompilerError CompErr in results.Errors)
{
//Hooray a list of compile errors
}
else
{
//Successful Compile
}
}

此外,如果您想跳过所有这些。看看this class .它允许您只使用方法主体,但这对您来说可能还不够。此外,您还需要更改 const CodeStart 字符串中的命名空间。

关于c# - 使用 CSharpCodeProvider 编写 XNA C# 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com