Невозможно исключить файлы при запуске автоматического развертывания из 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.