我想構建一個程序,它將編譯一個帶有xml文件的.cs作爲資源。我有以下代碼編譯:使用CSharpCodeDomProvider與資源文件編譯
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) : Error CS0103: The name 'Properties' does not exist in the current context
那麼這需要改變以解決這個問題呢?
'CodeDomProvider'和'IResourceWriter'都是'IDisposable'。你應該在'using'語句中包裝它們的用法。 –