1

当使用构建定义文件从 TFS 2013 运行自动部署时,我试图排除文件。

我在构建定义中使用的参数(MSBuild Arguments)如下:

 

/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=

 

在构建定义中,我将 Configuration 称为“任何 CPU|Release”,并且与我在 csproj 中提到的 ExcludeFoldersFromDeployment 相对应:

<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 文件。但没有运气。

4

1 回答 1

0

我能够找到解决方法。不完全是一种解决方法。就这样吧。右键单击项目,然后单击发布。在配置文件部分下,创建一个新配置文件。给它一个名字,让我们说“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 的名称。

于 2015-10-19T11:04:46.413 回答