2015-10-15 51 views
2

我已經根據此post編輯了我的csproj文件,但App_data中的額外文件將被刪除。 另一方面,當我修改msdeploy命令(如帖子中所示)時,會應用跳過。跳過規則不起作用

我正在使用web部署v3。並且該命令被

msdeploy.exe" -verb:sync -source:package=c:\builds\app.zip -dest:auto -setParam:"IIS Web Application Name"="Default Web Site/app" 

反正是有調試的可導致此行爲?

<PropertyGroup> <OnBeforePackageUsingManifest>AddCustomSkipRules</OnBeforePackageUsingManifest> 
    </PropertyGroup> 

<Target Name="AddCustomSkipRules"> 
    <ItemGroup> 
     <MsDeploySkipRules Include="SkipDeleteAppData"> 
     <SkipAction>Delete</SkipAction> 
     <ObjectName>filePath</ObjectName> 
     <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath> 
     <XPath> 
     </XPath> 
     </MsDeploySkipRules> 
     <MsDeploySkipRules Include="SkipDeleteAppData"> 
     <SkipAction>Delete</SkipAction> 
     <ObjectName>dirPath</ObjectName> 
     <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath> 
     <XPath> 
     </XPath> 
     </MsDeploySkipRules> 
    </ItemGroup> 
    </Target> 

回答

2

我一直在檢討的Microsoft.Web.Publishing.targets,它看起來像這已經實現,所有你需要做的就是這個屬性添加到您的MSBuild腳本:

<PropertyGroup> 
    <SkipApp_DataFolder>True</SkipApp_DataFolder> 
</PropertyGroup> 

如果您是從的MSBuild命令行運行,您可以使用:

msbuild MyProject.csproj /p:SkipApp_DataFolder=True ...

UPDATE:

你可能想試試這個,把這個代碼在你的MSBuild文件的底部,之後的任何「進口」標籤:

<Target Name="GenerateSkipRuleForAppData"> 
    <EscapeTextForRegularExpressions Text="$(_PackageTempDir)"> 
     <Output TaskParameter="Result" PropertyName="_Escaped_PackageTempDir" /> 
    </EscapeTextForRegularExpressions> 
    <ItemGroup> 
     <MsDeploySkipRules Include="SkipAddDataOnDeploy"> 
     <SkipAction></SkipAction> 
     <ObjectName>dirPath</ObjectName> 
     <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data$</AbsolutePath> 
     <XPath></XPath> 
     </MsDeploySkipRules> 
    </ItemGroup> 
    </Target> 

這是Microsoft.Web了「GenerateSkipRuleForAppData」目標的精確副本。沒有條件的發佈。目標(似乎條件工作不正常),這將覆蓋原始目標,並應該強制執行它而不會中斷目標的邏輯。

+0

不,它不工作。在IIS中的應用程序導入時,這些文件將從App_data中刪除。 – user49126

+0

我甚至在構建輸出中找到了SkipApp_DataFolder = True – user49126