今天佈署時有個需求
請不要把站台上的 App_Data 和某些 Folder 清除掉
我的第一個疑問是我並沒有在佈署去多做什麼額外的清除設定怎麼可能會砍掉呢 ?
於是就開始一連串的實驗
由於什麼都不調整的狀況下
站台內確定會把 App_Data 資料夾給移除掉所以就不再特地去重現了
Visual Studio IDE 中的單鍵發行記得有個選項是排除 App_Data Folder
實驗勾選 Exclude files from the App_Data folder
佈署目標站台後 App_Data Folder 還是被移除
所以這個方式是無法達成需求的
這個方式不行於是把腦筋給動到 .csproj
把「更新排除特定資料夾」這件事情定義在 .csproj 的作法我認為不是個好選擇
但是目前我還沒想到其他方式可以做到這個需求
懇請其他大神提供更好的方式
調整 .csproj
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OnBeforePackageUsingManifest>AddSkipRules</OnBeforePackageUsingManifest>
</PropertyGroup>
<Target Name="AddSkipRules">
<ItemGroup>
<MsDeploySkipRules Include="SkipAppDataDirOnDeploy">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data</AbsolutePath>
<XPath></XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipGeneratedFilesDirOnDeploy">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_Escaped_PackageTempDir)\\GeneratedFiles</AbsolutePath>
<XPath></XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
</Project>
排除掉「App_Data」與「GeneratedFiles」
Run 完的結果是成功的
相關連結
c# - How to set MSDeploy settings in .csproj file - Stack Overflow
Alanta Developer Notes: Web Deploy : Customizing a deployment package