2010-04-14 88 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