簡體   English   中英

開源Visual Studio項目分發的噩夢

[英]Open source Visual Studio project distribution nightmare

每當微軟發布新版本的visual studio時,他們總是要求我將我的解決方案和項目文件轉換為“最新版本”。 即使使用像“Hello World”解決方案這樣簡單的東西,我也需要完成他們的轉換向導!

而且,更糟糕的是,新的visual studio解決方案文件與舊版本的visual studio不兼容。

對於那些與一群人合作的人來說,或者任何希望為他們的項目分發源代碼的人,這真是一場噩夢。

是否有任何好方法來分發視覺工作室項目,並允許使用舊版Visual Studio的人仍然使用它? 這是一個簡單的C程序,不使用任何漂亮的選項。 我只能訪問Visual Studio 2008,並且Visual Studio不提供向后“轉換”向導。 使用nmake + makefile發布源代碼來構建程序是否有意義? 似乎nmake文件格式在一段時間內沒有顯着改變,並且可以提供適用於更廣泛版本的visual studio的makefile。

執行此操作的常規方法是將vs項目文件放在解決方案的子目錄中。 例如

solution
 - build
 -- vc6
 -- vc7
 -- vc8
 -project1
 -- src
 -- build
 --- vc6
 --- vc7
 --- vc8
 -project2
 -- src
 -- build
 --- vc6
 --- vc7
 --- vc8

然后,當您獲得新版本的vs - 將最后一個項目目錄(例如vc7)復制到vc8時 - 對解決方案執行相同操作 - 在文本編輯器中打開解決方案和項目文件以修復任何路徑 - 最后在新版本中打開解決方案vs並讓它轉換你的項目 - (使用源代碼控制就像一個或你的路徑錯誤它更新舊目錄中的項目)

這很煩人,但你每隔幾年就要做一次。

這就是我們以前的做法,但是有一種更好的方法,那就是使用CMake來生成你的項目。 我們現在在工作中使用它,它允許使用單個項目定義在Windows和unix上本地工作。 在Windows上,我們在unix上使用vs項目,我們使用eclipse和makefile。 此外,CMake允許您抽象編譯器和鏈接器標志等常見項目設置,因此只需在一個位置進行修改。

我現在將CMake用於所有c ++項目,無論我是否需要其多平台功能。

您可以使用CMake作為項目的構建工具。 它將為您生成VS項目文件,您只需打開該文件並使用它來構建項目。 轉換問題無關緊要,因為您可以使用CMake再次構建它。

在這種情況下,CMake的優勢是可移植性和版本獨立性(也是跨平台構建功能,但這可能不相關)。 然而,CMake確實有一點學習曲線,並不像使用項目文件那么簡單,但它確實解決了您遇到的問題。 由於您的項目相對簡單,它可能是您的解決方案。

沒有簡單的答案。 但我希望我們做到了。 情況只會越來越糟,因為2005年以后你還需要打包一個redist包或者與運行時進行靜態鏈接。 如果你有一個2008靜態鏈接二進制文件與前一代(早於2005年)的應用程序交談,我就不知道它將會做什么。 根據MS,這應該工作。

您能安全地假設您的所有用戶都擁有Visual Studio的副本嗎? 它們都運行相同的版本嗎? (我知道,快遞版現在是免費的......)如果你繼續追求這條道路並且讓他們都使用相同版本的VS2008讓你的每個人的生活更輕松,你需要教育你的用戶基礎上的困難。

不過,我寧願使用make / gcc而不是去公園。

我認為使用nmake是可行的方法 - 不幸的是,VC6是最后一個版本,可以根據項目自動為您創建一個版本。

但是,你說你的項目很簡單,所以這不應該是一個主要的障礙。

我建議你使用開源過程。 將您的代碼發布為VS 2008,並允許使用早期版本的人為這些版本提供解決方案文件。 這是開源方式。

我見過的商業Windows庫使用的一個解決方案是將VS版本命名為后綴(例如:Project_VS2005.sln,Project_VS2008.sln等)。 您仍然必須保持它們同步,但您不必更改文件路徑,包含目錄或修改實際的解決方案文件; 只保留多個文件,每個文件對應一個支持的VS版本。 您必須對項目文件執行相同的操作,但至少您不必更改內容以支持不同的目錄結構,除非您希望支持與多個VS版本並排構建,並且在這種情況下在這里,您只需更改每個不同項目文件的輸出設置。

不是說這是一個很好的解決方案,而是另一種選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM