文章出處

昨天在一臺電腦上用git新簽出一個項目進行build,卻出現一堆編譯錯誤,而在原先的開發機上build無任何錯誤。對比分析后發現,開發機上VS的啟動項目(startup project)與這臺電腦上的不一樣,改為一樣后,build立馬成功。看來問題與msbuild編譯VS項目的順序有關,而哪個項目作為啟動項目會影響到這個編譯順序。

要避免這個問題,就要保證git簽出的VS解決方案的啟動項目是一致的,然而啟動項目的設置并不保存在.sln文件中,而是保存在.suo文件中,但是.suo文件通常不放在git中,因為它經常變動。于是問題變成了——有沒有辦法直接在.sln文件中設置啟動項目呢?

搗鼓了一會發現,如果不設置啟動項目,Visual Studio會自動選擇一個固定的項目作為啟動項目,Visual Studio是根據什么作出這樣的選擇呢?用文本編輯器打開.sln文件分析后發現原來是第一個"Project...EndProject"。于是,解決方法一躍而出——修改.sln文件,將要設置為默認啟動項目的項目的"Project...EndProject"放在第一個。

Project("{guid}") = "default startup project", "default startup project.csproj", "{guid}"
EndProject
...Other projects

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()