Невозможно исключить файлы при запуске автоматического развертывания из TFS 2013 с использованием файла определения сборки

Я пытаюсь исключить файлы при запуске автоматического развертывания из TFS 2013 с использованием файла определения сборки.

Аргументы (аргументы MSBuild), которые я использую в определении сборки, следующие:

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:CreatePackageOnPublish=True

/p:MSDeployPublishMethod=WMSVC /p:MSDeployUseChecksum=true /p:AuthType=NTLM

/p:AllowUntrustedCertificate=True /p:MSDeployServiceUrl=https://servername/msdeploy.axd

 /p:DeployIisAppPath="TestSite" /p:UserName=

В определении сборки я упомянул конфигурацию как "Any CPU|Release", и в соответствии с этим я упомянул ExcludeFoldersFromDeployment в csproj:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

    <DebugType>pdbonly</DebugType>

    <Optimize>true</Optimize>

    <OutputPath>bin\</OutputPath>

    <DefineConstants>TRACE</DefineConstants>

    <ErrorReport>prompt</ErrorReport>

    <WarningLevel>4</WarningLevel>

  <ExcludeFilesFromDeployment>bin\some.dll</ExcludeFilesFromDeployment>

    <ExcludeFoldersFromDeployment>someFolder</ExcludeFoldersFromDeployment>

  </PropertyGroup>

Когда я щелкаю правой кнопкой мыши по проекту и нажимаю кнопку опубликовать, он успешно исключает эти файлы, но когда я пытаюсь выполнить это через определение сборки, он не исключает эти файлы и папки.

Пожалуйста помоги. Я попытался использовать файл wpp.targets также. Но не повезло.

1 ответ

Я смог найти обходной путь. Не совсем обходной путь. Так что вот так. Щелкните правой кнопкой мыши по проекту и нажмите "Опубликовать". В разделе "Профиль" создайте новый профиль. Дайте ему имя, скажем, "TestDeployment". Сохраните и закройте окно. Это создает файл.pubxml в вашем проекте, расположение которого - \Properties\PublishProfile. Под этим файлом мы можем определить наши правила пропуска. Под надписью добавьте следующую строку:

<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>

И за пределами этого элемента добавить следующее:

  <Target Name="AddCustomSkipRules">
    <Message Text="Adding Custom Skip Rules" />
    <ItemGroup>
      <!--Skipping folders-->
      <MsDeploySkipRules Include="Skip_some_Folder">
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\bin\\some</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>

Обратите внимание, что это регулярное выражение. Здесь я пропускаю папку, поэтому упомянул как "dirPath". Если вам нужно пропустить файлы, сделайте его "filePath". Сохраните этот файл и в определении сборки перейдите к Process и затем в разделе "MSBuild arguments" добавьте:

/p:DeployOnBuild=True /p:PublishProfile=TestDeployment

Здесь я добавил DeployOnBuild, чтобы он запускался только после завершения сборки. А в разделе "PublishProfile" я упомянул имя созданного нами.pubxml.

Другие вопросы по тегам