2010-08-20 115 views
4

在我們的環境中,我們有兩個內部框架和一個單獨的網站。在開發過程中,對內部框架的引用往往被設置爲項目引用。但是,一旦我們開始發佈,內部框架就會安裝到GAC中,因爲它們用於每臺服務器上的多個網站實例。所有的ProjectReference手動更改爲參考文獻,並重新編譯和部署網站程序集和網站。MsBuild:將參考文獻從ProjectReference更改爲參考

我正試圖自動化這個過程。處理這些問題的最佳方法是什麼?爲了完成這個任務,我開始學習MsBuild,但我完全糊塗了。任何指示和/或建議如何進行?

回答

3

據我所知,不應該有任何需要改變從使用項目引用到文件引用僅僅是因爲程序集在GAC中註冊 - 只要被引用的項目強烈鍵入它的點是建立,參考應該仍然有效。

澄清:

有一個GAC引用和文件引用之間沒有根本的區別 - 如果你有一個強命名程序集的引用,而組件被放置在GAC那麼最終的應用程序將從GAC加載該程序集。

請參閱此鏈接的詳細信息,在運行時如何定位引用的程序:

僅供參考 - 我相信這是建議您參考組件這是在物理上在GAC中,並且您將它放置在GAC中之前將強烈指定的組合件引用(不要與組件是否應安裝到最終用戶機器上的GAC相混淆)

+0

其實,我不想要文件參考 - 我想要一個GAC參考。這是由於我們的安裝項目的工作原理 - 它只將項目安裝到GAC中。 – 2010-08-20 19:01:33

+0

@大衛 - 我不明白你的意思是什麼「GAC參考」,我認爲你的意思是你想要安裝到GAC的強烈名爲大會的參考?如果是這種情況,那麼「GAC參考」和文件參考之間沒有根本的區別。 – Justin 2010-08-20 20:51:12

1

如果您離開項目引用,MSBUILD會將所有項目引用作爲DLL複製到目標網站的bin目錄中,即使您已將這些DLL安裝到GAC中,我假設您爲什麼要在發佈級別 - 這樣可以節省空間。

我還假設你打算只在發行部門這樣做,而不是在源代碼控制的開發部門。因爲如果你在源代碼控制的所有分支都這樣做,那麼親手做實際上是一次性更改的最好和最快的方法。

要在MSBUILD中執行此操作,您需要創建一個可以修改項目文件的自定義任務。項目文件是一個XML文件,因此您可以在MSBUILD中將XPath用作自定義任務。在項目文件中,您可以找到引用項目的「」標籤。您需要改爲「」標記。在你的項目中使用現有的標籤示例,看看它應該如何看待

對不起,我沒有這樣的示例代碼 - 這樣做將是一個承諾,因爲會有一些需要考慮的事情,它可能最終不可行。