8

我正在使用 TeamCity 通过 msbuild 和 WebDeploy 构建和部署一组 MVC 应用程序。

在我的解决方案构建/部署之前的步骤中,我将 app_offline.htm 复制到部署目录,以便我可以执行 SQL 更新和其他 Web/解决方案管理步骤,包括构建。

WebDeploy 中的一项设置是删除未包含在项目中或运行站点不需要的文件。这每次都会删除我的 app_offline.htm 文件。虽然我知道这是一种理想的结果,但有没有办法在部署时排除这个文件从部署目录中删除?

我尝试使用 ExcludeFromPackageFiles 选项添加 ItemGroup,但没有结果。

4

2 回答 2

0

另一个问题“发布期间的自定义 app_offline.htm 文件”为您描述的最终结果提出了一种可能的方法:

我用自己的

app_offline.htm_

解决方案中的文件,该文件将被发布。然后我的部署脚本将其重命名(删除尾随 _)以使其处于活动状态。

然后我可以运行我的数据库脚本/执行任何操作,然后重命名文件以恢复站点。

于 2011-02-25T05:28:19.743 回答
0

我有一个类似的问题,希望将缩小的 javascript 文件保留在部署包中,即使它们不是项目的一部分。

我为此添加了一个自定义 MSBuild 目标,它适用于我:

<!-- ====== Package the minify files ===== -->

 <PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    CustomCollectFiles1;    
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
 </PropertyGroup>

 <PropertyGroup>
   <AfterAddIisSettingAndFileContentsToSourceManifest>
    MakeEmptyFolders
   </AfterAddIisSettingAndFileContentsToSourceManifest>
 </PropertyGroup>

<Target Name="CustomCollectFiles1">
  <ItemGroup>
   <!-- =====Controls\Javascript folder ==== -->
    <_CustomFilesForRootFolder Include=".\Controls\Javascript\*.min.js">
    <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)    </DestinationRelativePath>
   </_CustomFilesForRootFolder>
  <FilesForPackagingFromProject Include="%(_CustomFilesForRootFolder.Identity)">
    <DestinationRelativePath>.\Controls\Javascript\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
  </FilesForPackagingFromProject>
 </ItemGroup> 
</Target>
于 2011-06-22T20:23:08.893 回答