我需要制作一个可执行文件,然后使其成为自己的可执行文件。
问题是,我正在使用嵌入式资源.. 它们也必须位于已编译的exe中。
那么问题来了,这是怎么了? :
我正在使用以下编译器选项进行构建:
cp.IncludeDebugInformation = false;
cp.GenerateExecutable = true;
cp.GenerateInMemory = false;
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.Drawing.dll");
cp.ReferencedAssemblies.Add("System.Management.dll");
cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
cp.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll");
cp.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
cp.ReferencedAssemblies.Add(AppDomain.CurrentDomain.BaseDirectory +"\\Resources" + "\\IconLib.dll");
cp.ReferencedAssemblies.Add(AppDomain.CurrentDomain.BaseDirectory + "\\Resources" + "\\Microsoft.Office.Interop.Outlook.dll");
cp.EmbeddedResources.Add(AppDomain.CurrentDomain.BaseDirectory + "\\Resources" + "\\IconLib.dll");
cp.EmbeddedResources.Add(AppDomain.CurrentDomain.BaseDirectory + "\\Resources" + "\\outlook.ico");
cp.EmbeddedResources.Add(AppDomain.CurrentDomain.BaseDirectory + "\\Resources" + "\\Source.cs");
cp.CompilerOptions = "/filealign:0x00200 /optimize+ /platform:X86 /debug- /target:winexe";
该exe可以很好地执行exe,并且所包含的dll类似于Microsoft。和IconLib.dll似乎可以正常工作,但应用程序可以交互!
当编译的exe尝试访问资源时,例如Outlook.ico,它会崩溃。
这是资源的呼唤:
var notification = new System.Windows.Forms.NotifyIcon()
{
Visible = true,
**Icon = Main.Properties.Resources.outlook,**
BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info,
BalloonTipTitle = TT,
BalloonTipText = Tt,
};
调用嵌入式资源时,应用程序崩溃。 我该如何解决?
目标exe的命名空间属性:
namespace Main.Properties {
using System;
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Main.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static byte[] IconLib {
get {
object obj = ResourceManager.GetObject("IconLib", resourceCulture);
return ((byte[])(obj));
}
}
internal static System.Drawing.Icon outlook {
get {
object obj = ResourceManager.GetObject("outlook", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static string Source {
get {
return ResourceManager.GetString("Source", resourceCulture);
}
}
}
}
用于嵌入资源的代码是否错误? 他是否在使用电话而不是资源使用其他文件夹? 我需要链接它们吗? 这里有很多问题。