Игнорировать атрибуты файла с MSDeploy? - PullRequest
0 голосов
/ 29 июля 2011

При использовании msdeploy для выполнения операции синхронизации одна из вещей, которые MSDeploy проверяет, должен ли файл синхронизироваться или нет, - это атрибуты файла (только для чтения, архивирование и т. Д.).Если атрибуты отличаются между двумя копиями файла, тогда файл будет синхронизирован.Есть ли способ сказать MSDeploy игнорировать атрибуты файла при определении, должен ли файл быть синхронизирован или нет?

1 Ответ

3 голосов
/ 04 августа 2011

Это возможно, однако, не только в командной строке. Вам нужно будет создать пользовательский DeploymentRuleHandler, например:

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; }
        }
    }

}

Скомпилируйте это в сборку (для .Net 3.5 для WebDeploy v2!) И поместите сборку в подпапку "Extensibility" в папке WebDeploy (обычно C:\Program Files\IIS\Microsoft Web Deploy V2\Extensibility).

Затем вы можете легко использовать свое пользовательское правило при запуске msdeploy из командной строки, добавив следующий аргумент:

-enableRule:IgnoreFileAttributes

Конечно, эта сборка должна присутствовать как на исходном, так и на целевом компьютере операции синхронизации.

К сожалению, нет более легкого способа добраться туда!

...