2011-06-15 55 views
5

我有一個使用msbuild部署的網站項目。在該項目中,有一些構建所需的文件和文件夾(例如web.config部件替換文件),但我不想將其部署到目標站點。使用msbuild從網站部署中排除文件

我能想到的最好的是一個後期構建目標,刪除這些文件,但我想知道是否有辦法讓這些文件不復制到輸出文件夾。

在性能資源管理器中的文件

回答

3

改變選擇「複製到輸出目錄‘不復制’

enter image description here

+0

這是一個網站項目,而不是一個Web應用程序。我需要一種方法來從msbuild文件中做到這一點。 – 2011-06-15 13:58:51

2

可以使用MSDeploy與Web發佈管道排除文件被列入包創建。 你可以使用這樣的東西,如果你想從部署的數據包排除例如App_Data文件夾

<Target Name="ExcludeApp_Data" DependsOnTarget="$(ExcludeApp_DataDependsOn)" Condition="$(ExcludeApp_Data)" > 
    <ItemGroup> 
    <ExcludeFromPackageFolders Include="App_Data"> 
     <FromTarget>ExcludeApp_Data</FromTarget> 
    </ExcludeFromPackageFolders> 
    </ItemGroup> 
</Target> 

不知怎的編輯器不顯示代碼親佩爾利。 當你配置Package/Publish網頁時,上述內容會在proj文件中生成。你可以添加你自己的目標來完成它。

例如,如果要排除腳本\ jQuery的文件從您的構建,創建單獨的ExcludeScriptFiles.wpp.targets文件,如下

<ItemGroup> 
    <ExcludeFromPackageFolders Include="Internal"> 
    <FromTarget>ExcludeScriptFiles.wpp.targets</FromTarget>   
    </ExcludeFromPackageFolders> 
    <ExcludeFromPackageFiles Include="Scripts\jquery.js;xyz.js"> 
    <FromTarget>ExcludeScriptFiles.wpp.targets </FromTarget> 
    </ExcludeFromPackageFiles> 
</ItemGroup> 

這只是一個簡單的例子來編寫自己的目標。

希望這有助於

+0

感謝您的提示,我會盡快嘗試。要回答您的(現在已編輯過的)問題,您可以在SO中正確格式化XML,您只需將其分佈在多行中即可。 – 2011-06-16 06:57:29

+0

@Paolo感謝格式化提示。當我嘗試跨多行分發時,格式化沒有通過我按回車後。我錯過了什麼?我目前也正在完成一項任務,用於一次性爲不同環境(測試/階段/生產)生成配置文件並創建部署包。 – DotNetInfo 2011-06-16 14:17:05

4

喜檢查this blog post出它救了我的一天,

我是想排除的JavaScript的非精縮版,並且只使用縮小的版本發佈的時候(我刪除大的JavaScript和chirp.config)它只需要調試。

只是把它放在項目文件中,如鏈接所述。

<ItemGroup> 
    <ExcludeFromPackageFolders Include="Scripts\large"> 
     <FromTarget>Project</FromTarget> 
    </ExcludeFromPackageFolders> 


    <ExcludeFromPackageFiles Include="Scripts\mash.js.chirp.config" /> 
    <ExcludeFromPackageFiles Include="Content\mash.js.chirp.config" /> 
    </ItemGroup> 

發佈的站點將不包括以下內容:

  • 腳本\大
  • mash.js.chirp.config
7

您可以選擇文件,並設置自己的「生成行動「改爲」ExcludeFromPackageFiles「。這樣Visual Studio將編輯csproj xml,你不需要。