CMWTAT_Digital_Edition/CMWTAT_DIGITAL/Program.cs

113 lines
3.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CMWTAT_DIGITAL
{
public static class Program
{
public static bool autoact = false;
public static bool hiderun = false;
public static bool expact = false;
public static bool log2file = false;
public static bool showhelp = false;
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main(string[] startup_args)
{
//添加程序集解析事件
//AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
//{
// String resourceName = "CMWTAT_DIGITAL.Res." +
// new AssemblyName(args.Name).Name + ".dll";
// Console.WriteLine("Load Assembly: " + resourceName);
// using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
// {
// if (stream == null)
// return null;
// Byte[] assemblyData = new Byte[stream.Length];
// stream.Read(assemblyData, 0, assemblyData.Length);
// return Assembly.Load(assemblyData);
// }
//};
var loadedAssemblies = new Dictionary<string, Assembly>();
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
String resourceName = "CMWTAT_DIGITAL.Res." +
new AssemblyName(args.Name).Name + ".dll";
//Must return the EXACT same assembly, do not reload from a new stream
if (loadedAssemblies.TryGetValue(resourceName, out Assembly loadedAssembly))
{
return loadedAssembly;
}
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream == null)
return null;
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
var assembly = Assembly.Load(assemblyData);
loadedAssemblies[resourceName] = assembly;
return assembly;
}
};
foreach (string arg in startup_args)
{
Console.WriteLine("arg: " + arg);
if (arg == "-a" || arg == "--auto")
{
Console.WriteLine("AUTO: True");
autoact = true;
}
if (arg == "-h" || arg == "--hide")
{
Console.WriteLine("HIDE: True");
hiderun = true;
}
if (arg == "-e" || arg == "--expact")
{
Console.WriteLine("EXPACT: True");
expact = true;
}
if (arg == "-l" || arg == "--log")
{
Console.WriteLine("LOG: True");
log2file = true;
}
if (arg == "-?" || arg == "--help")
{
Console.WriteLine("SHOWHELP: True");
showhelp = true;
}
}
CMWTAT_DIGITAL.App app = new CMWTAT_DIGITAL.App();//WPF项目的Application实例用来启动WPF项目的
app.InitializeComponent();
app.Run();
}
}
}