1

我试图在使用构建定义文件从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= 

在我所提到的配置为构建定义 “任何CPU |释放”并对应于我提到的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文件。但没有运气。

回答

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'。 保存此文件,并在生成定义,去过程,然后在“的MSBuild参数”添加:

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

这里我已经加入“DeployOnBuild”,这样,当构建已经通过这种只运行。在'PublishProfile'下,我提到了我们生成的.pubxml的名称。