2017-03-07 69 views
0

在我的解決方案,而不是引用的DLL的某些庫,這些項目已列入我的解決方案:如何在不引用它們的情況下構建相關項目?

enter image description here

而不是必須包括解決方案的項目的一部分,是有可能要麼有他們build definition的一部分,或可能作爲預生成事件命令行:

enter image description here

我如何包括需要爲我的SOLUT待建項目離子實際上沒有他們加載在解決方案?

+0

你能解釋爲什麼你不想使用引用?無論如何,是的,你可以使用prebuild事件來發出多個msbuild語句來構建每個projetc。 – stijn

+0

@stijn原因是因爲這些項目正在從其他解決方案不斷髮展 –

+0

@stijn使用插件架構或類似MEF – DavidG

回答

1

你可以用2種方式工作。您可以參考項目中的其他項目或dll。你可以將兩者結合起來。如果您不希望在解決方案中構建一些項目作爲解決方案的一部分,則必須預先構建這些項目並將其引用到編譯過程的輸出中。如果您希望它們成爲解決方案的一部分,但不能編譯,請使用Build Configuration Manager。您可以使用它來標記哪些項目在該配置下構建,哪些不構建。

如果你有一個大的解決方案,這是更好地輸出從那裏設置爲任意的lib文件夾和參考爲好。確保在這種情況下設置項目構建順序。

對於小型解決方案,項目引用將正常工作。在這種情況下,構建命令將自行建立。

不同之處在於性能 - 萬一#1 - DLL參考允許您構建單個項目。在案例#2中,構建單個項目將觸發項目編譯鏈。在這種情況下,您每次只需等待更長的時間。在一個大的解決方案中,這對開發人員是有害的。

而最後一件事,如果你有沒有被引用,但在你的應用程序中使用某些DLL,可以說,通過反射加載,你可以使用預建後建立事件,這些複製到$(TargetDir)

+0

「你必須預先構建它們並指向編譯過程的輸出。」----我該如何做到這一點? –

+0

這個問題讓我「靠牆」 - 例如,您將它們構建爲另一個解決方案的一部分。然後,你應該有一個'bin'文件夾,你永久存儲它們。然後你去'項目 - 添加參考瀏覽'。選擇你的dll並添加引用 –

+0

我完全涉及到「靠牆」 - 現實並不像簡單訂閱nuget feed那麼簡單,如果你建議將它們構建爲另一個解決方案的一部分,請記住這些引用的項目正在不斷髮展,那麼在構建當前解決方案之前,我如何強制另外建立一個解決方案(如您所建議的那樣)? –

相關問題