3

我有3個.net項目。跨多個Visual Studio版本的項目依賴關係

Project1.dll由VS2008項目生成。

Project2.dll由引用Project1.dll的VS2005項目生成。

Project3.dll由引用Project1.dll和Project2.dll的VS2008項目生成。

現在,我構建Project1.dll,並手動將其複製到Project 2可以拾取它的位置。

然後我生成Project2.dll並手動將它和Project1.dll複製到Project 3可以接收它們的位置。

顯然我做錯了(手動)。什麼是使我的項目參考保持最新的正確方法?


將Project2更新到VS2008,然後創建一個包含所有3個項目的解決方案目前不是一個選項。我們有一個尚未在VS2008中工作的第三方visualstudio插件。 Project2必須留在VS2005

將Project1和Project3更新到VS2005,然後創建一個解決方案也不是一個選項。我們依靠這些項目中的C#3.0和.net 3.5功能。

回答

4

David, 可能最好的選擇是爲所有三個項目建立一個公共的構建文件夾。這可以在Project Properties-> Build - > Output path中完成。然後將引用指向輸出文件夾。這樣,無論何時您構建任何較低的項目,較高的項目都將具有最新的版本。您也可以設置每個配置的路徑(Debug,Release),因此您不需要爲每種構建類型更改該路徑。

+0

這是適用於我的方案。 – 2008-10-01 19:55:57

0

我們使用構建腳本處理依賴性,構建DLL並執行手動執行的操作。

+0

當然,有可能更優雅的方式來做到這一點。我也很有興趣聽到他們的消息! – itsmatt 2008-10-01 15:35:46

2

對於Project3的預生成事件,出去並使用批處理文件生成Project1將其複製到Project2文件夾,然後生成project2並將其複製到project3文件夾,如何。

+0

我的確使用後生成事件來處理我的情況中的細微差別。謝謝你的提示。 – 2008-10-01 19:58:21

0

過去我曾經使用過的一個技巧是將所有東西都移到2008年。然後我在2005年爲項目2設置了一個特殊的解決方案,並使用它來處理插件。讓這個工作取決於項目二在2008年的行爲有多糟糕。

1

我建議在解決方案之間共享csproj/vbproj文件。然而,這兩個版本的studio之間的項目文件格式是兼容的(解決方案文件不是這樣),只要你的VS2008項目的目標是2.0運行時,你應該不會編譯它們。這將允許您引用項目,這將處理依賴關係。

如果你有一個需要在兩個版本的工作室之間工作的web項目,這隻會變得毛茸茸的唯一的地方。在這種情況下,會對項目文件進行一些修改,這些修改將指向正確的MSBuild目標文件。

+0

這將適用於寫入的問題。我的情況稍有不同。嚴格來說,需要將Project2保持在2008年以外......只是我的奇妙生活。 – 2008-10-01 19:57:08

相關問題