2013-12-19 73 views
0

我遇到了一個場景,我需要在使用其他自定義文件進行發佈期間替換項目中的某些文件。案例是我們有幾個使用相同代碼庫的網站。但是,某些網站需要部署文件的定製版本(例如favicon.ico,Error.aspx ...)。在進行Web發佈時替換VS項目文件(Web部署)

我一直試圖提到Here in Sayed Ibrahim Hashimi blog ,但他們得到的原始項目文件發佈期間被覆蓋在我的projectName.wpp.targets包括這些文件作爲「額外文件」。

我可以從發佈輸出中看到包中包含「額外的文件」,但隨後它們將被項目中的相同文件替換。

有沒有辦法告訴MS Deploy在包含項目內容文件後包含我的文件,以便我的文件覆蓋?

------------更新------------------

我從下面的日誌中找到了(感謝大衛馬丁評論)文件沒有被覆蓋,而是他們被跳過,因爲項目中的文件比我想包括的更新:

CopyPipelineFiles:跳過複製F:\站點的額外文件部署\ xxx \ favicon.ico到obj \ xxx \ Package \ PackageTmp \ favicon.ico,文件obj \ xxx \ Package \ PackageTmp \ favicon.ico是最新的

那麼有沒有辦法強制包括這些fil即使他們年齡較大,也是如此?

+0

你確定自己是被取而代之,而不是部署到不同的位置? –

+0

是的,他們正在部署到正確的位置,但是你的評論讓我仔細看看發佈日誌,發現它實際上並未包含在包中,因爲修改後的日期來自額外的文件比文件中的文件早項目。我會更新我的問題以包含此內容。謝謝! –

回答

1

好的,所以我找到了一個解決辦法,如果有人跑到這個問題上,我會發布在這裏,但我歡迎任何其他解決方案!

我的問題中所述的問題是由於我想包含在我的包中的文件比我的項目中的文件早。所以我需要找到更新最後修改日期的方法。

我發現有一個「觸摸」的任務,將恰恰如此: http://msdn.microsoft.com/en-us/library/37fwbyt5.aspx

所以這是我在我的劇本終於做到:

<ItemGroup> 
    <Files Include="F:\Files For Sites Deployment\xxx\**\*" /> 
    </ItemGroup> 

    <PropertyGroup> 
    <CopyAllFilesToSingleFolderForMsdeployDependsOn> 
     TouchIncludeFiles; 
     CustomCollectFiles; 
     $(CopyAllFilesToSingleFolderForMsdeployDependsOn); 
     </CopyAllFilesToSingleFolderForMsdeployDependsOn> 
    </PropertyGroup> 

    <Target Name="TouchIncludeFiles"> 
    <Touch Files="@(Files)" ForceTouch="true"></Touch> 
    </Target> 
    <Target Name="CustomCollectFiles"> 
    <ItemGroup> 
     <_CustomFiles Include="@(Files)" /> 
     <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> 
     <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 
    </Target> 
相關問題