C#-在exe中嵌入dll-FileNotFoundException
我只需要一个文件来启动我的程序,这就是为什么我想在我的exe中嵌入我的dll 我需要2个dll的一个它的工作 这是我的程序:C#-在exe中嵌入dll-FileNotFoundException,c#,dll,embed,exe,filenotfoundexception,C#,Dll,Embed,Exe,Filenotfoundexception,我只需要一个文件来启动我的程序,这就是为什么我想在我的exe中嵌入我的dll 我需要2个dll的一个它的工作 这是我的程序: using System; using System.Linq; using System.Reflection; using System.Windows.Forms; namespace _4_Gewinnt___Client { static class Program { /// <summary> /// D
using System;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
namespace _4_Gewinnt___Client {
static class Program {
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
Application.Run(new Client());
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) {
string assemblyName = args.Name.Split(',').First();
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("_4_Gewinnt___Client." + assemblyName + ".dll")) {
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
}
}
}
使用系统;
使用System.Linq;
运用系统反思;
使用System.Windows.Forms;
名称空间\u 4\u Gewinnt\u\u客户端{
静态类程序{
///
///这是一个很好的例子。
///
[状态线程]
静态void Main(){
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.AssemblyResolve+=新的ResolveEventHandler(CurrentDomain_AssemblyResolve);
运行(新客户端());
}
静态程序集CurrentDomain_AssemblyResolve(对象发送方,ResolveEventArgs args args){
string assemblyName=args.Name.Split(',').First();
使用(var stream=Assembly.getExecutionGassembly().GetManifestResourceStream(“\u 4\u Gewinnt\u\u Client.+assemblyName+”.dll”)){
byte[]assemblyData=新字节[stream.Length];
读取(assemblyData,0,assemblyData.Length);
返回Assembly.Load(assemblyData);
}
}
}
}
但是如果我运行我的应用程序,我会得到一个FileNotFoundException
顺便说一句,构建操作设置为“嵌入资源”。并设置了引用,“本地副本”为false。
如果我将“Local Copy”设置为“true”,则一切正常,但我不需要任何其他文件(除了.exe)
我希望你能理解一切,我的英语不是最好的:)是汇编文件名是
\u 4\u Gewinnt\u\u\u客户机。“+assemblyName+”.dll
?dll的名称是:SharpUpdate.dll我的名称空间被称为“\u 4\u Gewinnt\u\u客户机”和项目路径的汇编文件相对路径是什么?路径是正确的,因为一个dll可以工作,但另一个不是!