2010-04-14 34 views
0

我有两个项目的解决方案。一个用于生产代码的项目,另一个用于单元测试。根据我从SO那里得到的建议,我做到了这一点。应该将测试的代码编译为DLL或可执行文件吗?

我注意到,在Debug文件夹,它包含在可执行的形式生产的代码。我使用NUnit在删除可执行文件后运行测试,并且都尝试查找可执行文件失败。所以它绝对是试图找到它。然后我做了一个快速阅读,找出哪个更好,一个DLL或一个可执行文件。看起来,DLL在共享可执行文件之间的通信较慢的内存空间时速度更快。

Unforunately我们的生产代码需要一个exectuable。所以单元测试会稍微慢一些。我并不担心这一点。但是该项目确实依赖于另一个库中编写的代码,该库目前也处于可执行格式。

应该是暴露某种SDK的项目,而被编译为一个DLL,然后使用SDK的项目被编译为可执行?

回答

1

只是因为它是一个可执行文件并不意味着它被装载作为一个单独的进程。

在.NET中,你可以很容易地加载一个EXE文件作为组件的DLL。这就是发生在这种情况下的事情(无论如何我都会想象) - 没有跨进程的沟通,没有问题。

如果你真正测试的东西应该在逻辑上是可执行的,那么这很好。

+0

谢谢。我在想,也许我应该先问这个问题。 .Net如何处理两个可执行文件之间的通信。 – uriDium 2010-04-14 15:14:44

+0

@uriDium:你的意思是“碰巧是EXE文件的两个程序集”还是“两个进程”?他们是完全不同的东西。一旦运行了一些代码,.NET并不关心程序集是在EXE文件还是在DLL中。 – 2010-04-14 15:23:28

+0

碰巧是EXE文件的两个程序集。不是两个单独的过程。为此,他们需要使用我想象的远程处理技术。除非它们被写入共享内存空间。 – uriDium 2010-04-14 15:31:00

相关问题