2011-07-28 171 views
2

有沒有辦法將項目輸出複製到解決方案中當前啓動項目的bin文件夾中?是否可以從MSBuild腳本中知道哪個項目是啓動項目?我所說的項目是PRISM模塊,由於它們的模塊化,它們沒有被shell項目引用。不過,我們仍將其添加到我們的解決方案中。將未引用的項目從解決方案複製到解決方案的啓動項目

到現在爲止,我們有一個非常簡潔的解決方案來調試我們的應用程序。我們的基礎架構項目(即構建過程的最低級別)將刪除一個... Shell \ bin \ Debug \ Modules文件夾。該應用程序的引導程序被配置爲直接從「模塊」目錄加載模塊。所有模塊項目都將其OutputPath配置爲此文件夾。

這個構建過程的優點是我們可以通過簡單地加載/卸載項目來選擇要調試的模塊。模塊文件夾始終清空,只有已加載的項目已建立。這是一種調試不同模塊組合的無配置方式。

如何開始一個新的PRISM項目,該項目使用我們已經爲其他殼牌創建的模塊。現在我面臨這個舒適的設置不能再工作的問題。單個模塊項目具有固定的OutputPath,開發人員將無法在不存在問題的情況下在不同解決方案中重複使用項目。

順便說一句,它不是一個MSBuild腳本,但必須自動化。

編輯:我忘了強調一點,相同的想法應該與使用通用模塊的多棱鏡殼一起工作,並且我可以同時在多個PRISM產品上工作。這就是爲什麼我無法爲所有文件夾使用共享的輸出路徑。

回答

2

可以在指定的MSBuild的AfterBuild目標的其他項目的輸出複製這樣的:作爲信息存儲在文件名爲.suo

<Target Name="AfterBuild"> 
    <Copy SourceFiles="$(SolutionDir)MyProject1\bin\$(Configuration)\*.dll" DestinationFolder="$(TargetDir)"/> 
    <!-- repeat for other projects --> 
</Target> 

據我所知,找出啓動項目是不平凡的。你可以探索編寫你自己的MSBuild任務或者擴展MSBuild Community task: GetSolutionProjects

1

您可以將「新建」項目的OutputPath配置爲指向與您的「shell」應用程序相同的... Shell \ bin \ Debug文件夾。這樣新的應用程序可以再次從相同的Modules文件夾中加載它的模塊。系統的任何其他部分都不需要更改。

+0

我編輯編輯我的問題:我忘了強調一點,相同的想法應該與使用通用模塊的多棱鏡殼一起工作,並且我可以同時在多個PRISM產品上工作。這就是爲什麼我無法爲所有文件夾使用共享的輸出路徑。 –

+0

這是否意味着您希望能夠爲每個產品設置一組不同的「活動」模塊? (我顯然需要閱讀Prism,看看爲什麼共享輸出路徑不起作用。) –

+0

@Gerstendörfer:是的。簡而言之,我希望獲得與參考項目相同的開發經驗,但不參考它。 –