我有两个项目的解决方案。一个用于生产代码的项目,另一个用于单元测试的项目。我根据我从SO获得的建议这样做了。
我注意到在Debug文件夹中它包含了可执行形式的生产代码。我删除了可执行文件后使用NUnit来运行测试,但是他们都试图找到可执行文件。所以它肯定是试图找到它。然后我做了一个快速阅读,找出哪个更好,一个DLL或一个可执行文件。似乎DLL更快,因为它们共享可执行文件之间的通信较慢的内存空间。
不幸的是,我们的生产代码需要具备可执行性。所以单元测试会稍慢一些。我并不太担心。但该项目确实依赖于另一个库中编写的代码,该库目前也是可执行格式。
是否应该将暴露某种SDK的项目编译为DLL,然后将使用SDK的项目编译为可执行文件?
答案 0 :(得分:1)
仅仅因为它是一个可执行文件并不意味着它被作为一个单独的进程加载。
在.NET中,您可以将EXE文件作为程序集加载,就像DLL一样容易。这就是在这种情况下发生的事情(我想,无论如何) - 没有跨进程通信,没有问题。
如果你真的在测试逻辑上可执行的东西,那就没关系。