在同一个解决方案中调用EXE。它可以改为DLL吗?

时间:2014-02-26 15:28:54

标签: c# windows dll invoke

这完全不在我的经验之内,所以如果这是一个愚蠢的问题,请原谅。我花了几个小时在谷歌寻找答案,我找不到一个似乎直接适用于我的情况。

我正在与一个拥有解决方案XYZ的小组合作。该解决方案有两个项目:XYZ和XYZOrchestrator。他们将两个项目中的BIN文件夹捆绑在一起,并将其部署到服务器上的一个文件夹中。 XYZOrchestrator什么都不做,只是弄清楚它需要多少个XYZ.exe副本,然后旋转掉每个调用XYZ.exe的线程:

private Process m_pProcess = new Process();
this.m_pNotify = pNotify;
ProcessStartInfo pInfo = new ProcessStartInfo("XYZ.exe");
pInfo.Arguments = m_pProcessId.ToString() + " " + m_pDataFile + " " +  m_pLogFile + " " + m_pReportFile + " " + m_pErrorFile;
pInfo.WindowStyle = ProcessWindowStyle.Hidden;

m_pProcess.StartInfo = pInfo;
m_pProcess.Start();

他们还在XYZOrchestrator中引用了XYZ.exe,并在XYZ.exe中调用方法,就像它是一个DLL一样。所以我的问题是:是否可以将XYZ.exe构建为DLL?你可以使用DLL而不是EXE执行上面的线程吗?如果我可以将其更改为DLL,它将很好地适合我们的构建/部署自动化模型。

2 个答案:

答案 0 :(得分:1)

不,运行dll是不可能的。为了清理结构,我将创建一个名为“XYZLib”的新Assembly(dll),并将XYZXYZOrchestrator共享的所有代码放在那里。然后依赖结构会更清晰。

答案 1 :(得分:0)

是。基本上,如果您认为启动进程是使用命令行参数调用Main,那么每次生成新线程时都可以自己执行。但请注意,您没有相同级别的隔离(异常处理,垃圾收集等)。您可能希望为每个实例创建一个新的appdomain。