【发布时间】:2014-03-03 14:37:30
【问题描述】:
我正在尝试构建一个程序,该程序将使用 xml 文件作为资源编译一个 .cs。我有以下编译代码:
private void Builder(bool run)
{
CodeDomProvider compiler = CodeDomProvider.CreateProvider("CSharp");
string output = "Output.exe";
string inputXml = "Input.xml";
string xml = File.ReadAllText(inputXml);
string inputCS = Properties.Resources.Program;
IResourceWriter writer = new ResourceWriter("temp.resources");
writer.AddResource("Story", xml);
writer.Close();
CompilerParameters parameters = new CompilerParameters();
//Make sure we generate an EXE, not a DLL
parameters.GenerateExecutable = true;
parameters.OutputAssembly = output;
parameters.GenerateInMemory = false;
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("mscorlib.dll");
parameters.ReferencedAssemblies.Add("System.Xml.dll");
parameters.EmbeddedResources.Add("temp.resources");
CompilerResults results = compiler.CompileAssemblyFromSource(parameters, inputCS);
if (run)
{
Process.Start(output);
}
}
但它有编译错误,并说Properties 不是来自Properties.Resources.Story 的有效引用:
要编译的cs文件中的代码
static bool LoadData()
{
bool result = true;
Program.doc = new XmlDocument();
doc.LoadXml(Properties.Resources.Story);
return result;
}
更新:这是具体错误:
c:\Users\Nick\AppData\Local\Temp\zk14fqrm.0.cs(38,25):错误 CS0103:当前上下文中不存在名称“属性”
那么需要改变什么来解决这个问题?
【问题讨论】:
-
CodeDomProvider和IResourceWriter都是IDisposable。您应该将它们的用法包含在using语句中。
标签: c# .net csharpcodeprovider