我以前在我的一个程序中嵌入了文件并取得了圆满成功,但我现在已将代码行转移到第二个程序中,令我失望的是,我无法让它为我的一生工作。
提取代码如下:
private static void Extract(string nameSpace, string outDirectory, string internalFilePath, string resourceName)
{
Assembly assembly = Assembly.GetCallingAssembly();
using (Stream s = assembly.GetManifestResourceStream(nameSpace + "." + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName))
using (BinaryReader r = new BinaryReader(s))
using (FileStream fs = new FileStream(outDirectory + "\\" + resourceName, FileMode.OpenOrCreate))
using (BinaryWriter w = new BinaryWriter(fs))
w.Write(r.ReadBytes((int)s.Length));
}
要提取我想要位于名为 NewFolder1 的文件夹中的程序,我正在输入代码:
Type myType = typeof(NewProgram);
var n = myType.Namespace.ToString();
String TempFileLoc = System.Environment.GetEnvironmentVariable("TEMP");
Extract(n, TempFileLoc, "NewFolder1", "Extract1.exe");
我可以毫无错误地编译程序,但是一旦程序到达要提取的行:
Extract(n, TempFileLoc, "NewFolder1", "Extract1.exe");
程序崩溃,我得到一个错误:“值不能为空”
是的,我包括了 System.IO 和 System.Reflection