2011-07-28 4 views
0

msdeployを使用して同期操作を行う場合、MSDeployがファイルを同期する必要があるかどうかを判断するためにチェックするものの1つは、ファイルの属性(読み取り専用、アーカイブなど)です。属性がファイルの2つのコピー間で異なる場合、ファイルは同期されます。ファイルが同期されるべきかどうかを判断する際にMSDeployにファイル属性を無視するよう指示する方法はありますか?MSDeployでファイル属性を無視しますか?

答えて

3

ただし、コマンドラインだけではありません。

namespace CustomRuleHandlers 
{ 
    using Microsoft.Web.Deployment; 

    [DeploymentRuleHandler] 
    internal class IgnoreFileAttributesRuleHandler : DeploymentRuleHandler 
    { 
     public override int CompareAttribute(DeploymentSyncContext syncContext, DeploymentObject destinationObject, DeploymentObjectAttribute destinationAttribute, DeploymentObject sourceObject, DeploymentObjectAttribute sourceAttribute, int currentComparison) 
     { 
      if ((destinationObject.Name.Equals("filePath", StringComparison.Ordinal)) 
       && destinationAttribute.Name.Equals("attributes", StringComparison.Ordinal)) 
      { 
       return 0; 
      } 
      return currentComparison; 
     } 

     public override string Description 
     { 
      get { return "Ignores file attributes when determining if a file should be synched or not."; } 
     } 

     public override string FriendlyName 
     { 
      get { return "IgnoreFileAttributes"; } 
     } 

     public override string Name 
     { 
      get { return "IgnoreFileAttributes"; } 
     } 

     public override bool EnabledByDefault 
     { 
      get { return false; } 
     } 
    } 

} 

が(!WebDeploy v2の.NET 3.5をターゲット)アセンブリにそれをコンパイルし、(WebDeployフォルダ内の「拡張」サブフォルダにアセンブリを置く:あなたはこのようなカスタムDeploymentRuleHandlerを構築する必要があると思います通常、C:\Program Files\IIS\Microsoft Web Deploy V2\Extensibility)。この引数を追加することで、コマンドラインからの場合msdeployを実行しているとき

その後、簡単にあなたのカスタムルールを活用することができます。もちろん

-enableRule:IgnoreFileAttributes 

を、そのアセンブリは、両方の上に存在することが、ソースとターゲットを必要とします同期動作の機械である。

残念ながら、そこに着くのは簡単ではありません。

+0

ありがとう!あまりにも簡単な方法はありません。 –

関連する問題