小编Ase*_*Ase的帖子

在Windows应用程序中显示控制台

有没有办法在Windows应用程序中显示控制台?

我想做这样的事情:

static class Program
{
    [STAThread]
    static void Main(string[] args) {
        bool consoleMode = Boolean.Parse(args[0]);

        if (consoleMode) {
            Console.WriteLine("consolemode started");
            // ...
        } else {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# console winforms

80
推荐指数
5
解决办法
14万
查看次数

appDomain.Unload(domain)后如何删除pluginassembly

我有一个奇怪的问题.我想删除已加载的程序集(硬盘上的plugin.dll),但程序集被操作系统(vista)锁定,即使我已卸载它.

FE

AppDomainSetup setup = new AppDomainSetup();
setup.ShadowCopyFiles = "true";
AppDomain appDomain = AppDomain.CreateDomain(assemblyName + "_AppDomain", AppDomain.CurrentDomain.Evidence, setup);
IPlugin plugin = (IPlugin)appDomain.CreateInstanceFromAndUnwrap(assemblyName,                        "Plugin.MyPlugins");
Run Code Online (Sandbox Code Playgroud)

我还需要assemblyinfos,因为我不知道pluginassembly中的哪些类实现了IPlugin接口.在一个Pluginassembly中应该可以有多个插件.

Assembly assembly = appDomain.Load(assemblyName);
if (assembly != null) {
   Type[] assemblyTypes = assembly.GetTypes();
   foreach (Type assemblyTyp in assemblyTypes) {
      if (typeof(IPlugin).IsAssignableFrom(assemblyTyp)) {
         IPlugin plugin = (IPlugin)Activator.CreateInstance(assemblyTyp);
         plugin.AssemblyName = assemblyNameWithEx;
         plugin.Host = this;
      }
   }
}
AppDomain.Unload(appDomain);
Run Code Online (Sandbox Code Playgroud)

如何在不锁定程序集的情况下从appDomain获取assemblyinfos?

最好的祝福

c# plugins assemblies

17
推荐指数
3
解决办法
8559
查看次数

标签 统计

c# ×2

assemblies ×1

console ×1

plugins ×1

winforms ×1