2012-10-23 184 views
5

我在Visual Studio 2012中有一個MVC 4項目。其中有Logs文件夾,其中只包含四個空的子文件夾。這個結構是我使用的一個庫所需要的。我包括這些文件夾項目是這樣的:如何強制MSBuild複製項目中的空文件夾?

<ItemGroup> 
    <Folder Include="App_Data\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XConnectionInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XErrorInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XHandshakeInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XMessageInterceptor\" /> 
</ItemGroup> 

但這是不夠的,所有這些文件夾(包括App_Data這是有從創建由Visual Studio項目)不會複製到包。我能以某種方式強制MSBuild複製它們,即使它們是空的?

+1

您可以在每個文件夾中放置一個虛擬空文件。也許不是很「純」,但它應該工作,並且要快速實施。 –

+0

我想過這個,但我希望有一些更好的和乾淨的解決方案。 – Episodex

+0

現在我知道我問了錯誤的問題。儘管下面的答案適用於構建,但它們並不適合我,因爲我使用的是WebDeploy,並且文件夾不會複製到包中。唯一的方法(也由MS推薦)是將@Damien_The_Unbeliever寫道的虛擬文件。 – Episodex

回答

4

添加PostBuild步驟來複制文件夾。

我不能爲VS2012明確回答,但這裏是你如何在VS2010做到這一點:

  • 該項目,並選擇屬性
  • 顯示生成事件選項卡上單擊鼠標右鍵
  • 把你的在生成後事件命令中複製命令

如果單擊編輯按鈕,彈出對話框將顯示一個宏按鈕,列出可用於避免的所有可用VS變量ID使用顯式路徑等

在VS2010中,修改項目文件看起來是這樣的:


    <PropertyGroup> 
    <PostBuildEvent>copy /Y "$(TargetDir)\*.*" "$(ProjectDir)\..\..\..\net40"</PostBuildEvent> 
    </PropertyGroup> 
+0

我正在使用常規VS項目,而不是MSBuild腳本。我應該編輯項目文件來添加這個?你能提供一個在項目文件中做這個例子嗎?我是新來建立腳本。 – Episodex

3

不要編輯項目文件。 我可以看到你在XSockets上使用的是舊版本,對吧?

按照布倫達所說,不介意項目文件。 請看附加的圖像... build events

不是100%肯定它是這個,你正在尋找,但...這表明前和後生成事件

問候 Uffe ,團隊XSockets

+0

謝謝!這應該工作,我會在星期一檢查。你爲什麼認爲我使用舊版本?我使用nuGet將XSockets 2安裝到我的MVC 4應用程序中。也許我做錯了什麼? – Episodex

+0

哦,那麼一切都很好!我的壞:) 認爲你有一些配置的東西(我們曾經在以前的版本)。 如果您有任何問題,只需ping我/我們,我們將盡我們所能幫助您! – Uffe

+0

很可能我很快就會聯繫你一些問題,當我把他們組織起來並重新思考的時候:)。感謝XSockets的出色工作!至於問題,我添加了評論爲什麼這些解決方案不適合我,但他們對我問的問題是正確的。 – Episodex

相關問題