2010-10-08 41 views
0

我有一個使用NServicebus的解決方案,該解決方案至少包含3個對此方案感興趣的項目;一個發佈者,一個掃描和一個web服務。基本上,掃描(一個或多個)收集數據供發佈者存儲在數據庫中,然後發佈給訂閱者。 webservice允許訪問存儲在發佈者數據庫中的數據。將構建拆分爲多個輸出目錄

當我在開發箱上構建這個解決方案並部署到測試環境時,一切都很好。上週我們開始在構建服務器上使用自動構建,並且在構建成功時,這些服務不會在測試環境中啓動。我發現這是因爲NServicesBus使用標記接口。 NServicesBus通用主機使用反射來檢查與這些標記的主機位於同一目錄中的程序集,以便知道哪一個啓動。與我的本地構建不同,構建服務器不會將每個項目構建到它自己的bin目錄中,而只是將所有程序集轉儲到一個bin目錄中。由於現在有多個類需要由主機啓動,因此無法運行。另外,Web服務有更多的程序集要包括髮布程序和掃描需要,所以最終結果是將相同的程序集部署到三個不同的目錄。這是沒有必要的,也不起作用。

我一直在修改構建像這樣來解決這個問題,但它是單調乏味的,它不是改變寬容:

<CreateItem Include="$(OutDir)*.*" Exclude="$(OutDir)BOHSweep*"> 
    <Output ItemName="PublisherFilesToCopy" TaskParameter="Include" /> 
</CreateItem> 

<CreateItem Include="$(OutDir)*.*" Exclude="$(OutDir)InventoryPublisher*"> 
    <Output ItemName="BOHSweepFilesToCopy" TaskParameter="Include" /> 
</CreateItem> 

<Copy SourceFiles="@(PublisherFilesToCopy)" DestinationFolder="\\XXXX\Transmittals\BOHPublisher\Test\%(RecursiveDir)" /> 
<Copy SourceFiles="@(BOHSweepFilesToCopy)" DestinationFolder="\\XXXX\Transmittals\BOHSweep\Test\%(RecursiveDir)" /> 

就如何解決這個問題的任何建議,優雅?

+0

什麼是你的構建服務器,以及爲何它沒有建立每個項目單獨的bin目錄?我們使用CruiseControl.NET來構建我們的Visual Studio解決方案和MSBuild,它工作得很好。 – 2010-10-08 14:07:12

回答