2015-01-26 42 views
3

作爲一個開發者失敗,我想我(在這種情況下的MSBuild在Visual Studio)編譯器時,它包含任何csproj項目在磁盤上缺少一個文件失敗得很慘。這個想法在我目睹網站意外刪除web.config後出現在我身上。沒有它,MSBuild會很高興地進行編譯(並且在持續集成中也會這樣做,因爲它也只是運行MSBuild)。的MSBuild力編譯失蹤項目文件

有沒有辦法迫使MSBuild的檢查,在所有的解決方案的項目中引用的所有文件都使得構建成功之前存在?啓用警告作爲錯誤似乎沒有做到這一點。事實上,查看輸出,我沒有看到任何文件丟失的通知。我知道它會標記標記爲「編譯」的項目文件缺少的文件,但是對於僅包含內容的文件呢?

回答

1

確實出現如果一個內容項被設置爲「不要複製」,那麼它不會在MSBuild中導致錯誤甚至是警告。但是,如果您將其設置爲「複製更新」或將類型更改爲「資源」(仍然保持「不復制」),則會觸發錯誤。我能夠創建一個隨機的.bak文件作爲「資源」,對我的構建沒有不利影響,我可以說。

+0

「資源」是指'嵌入式資源'嗎?如果是這樣,這在技術上不會增加​​生成的DLL的大小(無論如何略微)?另外,雖然這將覆蓋'web.config'的情況,但我寧願尋找一些使默認情況下所有文件都會拋出警告/錯誤的東西,而不是將每個文件都標記爲「Resource」。不過謝謝你的回答。目前,它總比沒有好! – Scott 2015-01-26 23:35:10

+1

@Scott:有一個簡單的「資源」選項(至少在VS2013中)。我認爲你必須編輯MSBuild的操作才能讓它在默認情況下發出警告/錯誤。由於您在添加文件時必須將文件從「無」切換到「內容」,因此您可以將它們改爲「資源」。對於現有文件,您可以一次更改所有類型。 – 2015-01-26 23:45:58