使用.targets文件为MSBuild预编译站点以进行部署

时间:2017-05-12 18:42:30

标签: asp.net tfs msbuild

我有一个ASP.NET Web项目(.Net 4.5,Visual Studio 2015)。

该解决方案使用XAML构建,而不是较新的Web构建。某些构建使用文件副本将应用程序直接部署到IIS服务器。

我们不使用Visual Studio中的“发布”操作来发布项目。

在ASP.NET项目的.csproj文件中,添加了以下import语句以添加其他.targets文件:

<Import Project="CSADeploy.targets" Condition="Exists('CSADeploy.targets')" />
<Target Name="AdditionalTargets">
  <!-- ... -->
</Target>

在此目标文件中复制文件。

以下是.targets文件的简短摘录:

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="BeforeBuild"> 
  </Target>
  <Target Name="AfterBuild">

我希望部署到服务器的代码为precompiled for deployment,只有部署或使用可更新UI部署才可以。 我知道发布操作中有一个复选框可以预编译,但我无法使用它。我必须使用现有的XAML版本与目标文件以及.csproj文件中的指令。

我也知道在部署文件后我可以在服务器上使用Aspnet_compiler.exe工具。但是我必须在复制文件之前执行此操作,因为我无法访问此服务器,并且我想阻止向构建过程添加手动操作。

如何预编译ASP.NET页面以进行部署,以便在我的方案中正确部署它们?

1 个答案:

答案 0 :(得分:1)

您可以为项目创建.pubxml文件,然后检入TFS,在.pubxml文件中,将precompileBeforePublish设置为True。

  <PropertyGroup>
    ......
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
  </PropertyGroup>

在xaml构建定义中,添加以下msbuild参数:

 /p:deployOnBuild=true /p:publishProfile=***.pubxml

然后在TFS xaml构建中,它将在部署之前进行预编译。