2013-02-28 111 views
2

我正在服務器上部署一些文件。但是當我這樣做時,構建會刪除所有位於該位置的文件和文件夾。我不想從服務器上刪除所有文件。我想從目標文件夾中排除一個文件夾(文件夾名稱是Temp)。臨時文件夾在刪除其他文件時不應該被刪除。怎麼做?部署文件時出現MSBuild問題

這裏是TFS你爲什麼要使用複製任務構建定義

<PropertyGroup Condition=" '$(DeployEnvironment)' == 'Dev' "> 
<DeployPath>\\server1\D$\temp\reports</DeployPath> 
</PropertyGroup> 
<Target Name="CoreCompileSolution" /> 
<Target Name="AfterCompile"> 
    <Message Importance ="high" Text="Solution Root: $(SolutionRoot)" /> 
    <Message Importance ="high" Text="Out Dir: $(OutDir)" /> 
    <Copy SourceFiles="@(RPTFiles)" DestinationFolder="$(OutDir)_PublishedWebsites\Reports\" /> 
</Target> 
<Target Name="AfterDropBuild" > 
    <CreateItem Exclude="$(DeployPath)\Temp*.*"> 
     <Output ItemName="PreviousDeployment" TaskParameter="Include" /> 
    </CreateItem> 
</Target> 
+0

你好嗎部署這些文件?你是使用TFS構建定義,從Visual Studio發佈還是其他? – 2013-02-28 23:51:34

+0

嗨,我正在使用TFS構建定義。這是相同的代碼。 – user2019295 2013-03-01 00:15:40

回答

1

?我認爲它的目的是在構建過程中用於本地操作,而不是部署(因爲它不會讓您有機會輕鬆配置行爲)。

我建議,而不是拷貝鯽魚您使用下列選項

  • 非Web應用程序一個 - 使用的Robocopy: /XD dirs [dirs]...:排除目錄匹配給定名稱/路徑。 XF和XD可以組合使用,例如,

    ROBOCOPY c:\source d:\dest /XF *.doc *.xls /XD c:\unwanted /S 
    

    查看this link的使用指南。你要麼在命令行(使用<Exec Command="" >任務運行,或採用MBuiild Community Tasksproject它有一個很好的包裝

  • Web應用程序:。你應該使用Web Deploy爲您部署您的或者使用的MSBuild集成(VS 2010和稍後,請參閱this blog series以獲取有關VS2010上的設置和配置的指導NB:它已在VS 2012中進行了大幅簡化,但我目前沒有鏈接共享)或從命令行(VS 2010之前)運行它:

    <Exec Command="&quot;$(WebDeployToolPath)&quot; -verb:sync - source:dirPath='$(MSBuildProjectDirectory)\Published\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -skip:skipaction='Delete',objectname='filePath',absolutepath='app_offline.htm' -skip:skipaction='Delete',objectname='filePath',absolutepath='logs\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='logs\\.*' -skip:skipaction='Delete',objectname='filePath',absolutepath='UserFiles\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='UserFiles\\.*' -verbose -allowUntrusted" />

注意使用skip:skipaction='Delete..跳過刪除文件和文件夾。

更新 它看起來像我已經undestood這個有點不正確的(我認爲,部署AfterCompile目標happenned,但是,我現在看到的,TFS使用CoreDropBuild目標做了部署。 所以我認爲,你需要的是覆蓋CoreDropBuild目標描述:。here(不過,我從來沒有嘗試過這一點)

您可以使用Copy任務爲主線的作者,或者基於的Robocopy/webdeploy走你個人喜好

+0

我沒有選擇在我的TFS構建「ROBOCOPY」選項。 – user2019295 2013-03-01 20:47:37

+0

好吧,您可以編輯上面粘貼的msbuild文件,對不對?請查看此鏈接[msdn論壇上的帖子](http://social.msdn.microsoft.com/forums/en-us/tfsbuild/thread/E996A014-0EBD-457B-BFD1-8BC518995A3F)以獲取CoreDropBuild任務的信息。 – Isantipov 2013-03-04 10:08:55

+0

添加了一個帶MSDN論壇鏈接的更新,其中的說明是通過覆蓋CoreDropBuild目標來排除文件 – Isantipov 2013-03-04 10:18:52