我正在使用iTextSharp pdf库在C#中创建pdf文件。是否可以将库文件添加到资源中(在“projektname”-properties下),这样我就可以简单地为用户提供.exe,而无需安装程序。
这是我在尝试简单地从调试文件夹运行exe而不安装它时出现的错误(对不起它的德语)。
我如何添加文件,是否有效或有更好的方法。
答案 0 :(得分:4)
是的,你可以:
在您的代码中,检查应用程序启动时是否存在。以下假设您使用的是WinForms。如果没有,代码也可以添加到WPF App
类。有一种方法可以覆盖WPF应用程序启动时调用的方法。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string dllPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "filenameofdll.dll");
if (!File.Exists(dllPath))
{
byte[] fileBytes = Properties.Resources.<resourcename>;
File.WriteAllBytes(dllPath, fileBytes);
}
Application.Run(new Form1());
}
上面代码中的 <resourcename>
将是您资源的名称。它应该由IntelliSense自动完成。
只要在上面的代码执行后才使用DLL,这应该可以工作。只应在创建DLL的第一个类实例时加载DLL,所以你应该没问题。
<强>声明强>
我不知道这是否有许可影响!请确保你没有做任何违法的事情。另外:只有在应用程序对文件夹具有写入权限时,上述操作才有效。
答案 1 :(得分:1)
在这篇文章中解决了类似的问题 如何将dll放入exe中的方法。
How to bundle MahApps.Metro into single exe
此外,您可以使用IL合并
http://www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge