【问题标题】:TFS Build dropping extra files including csproj in target folderTFS Build 在目标文件夹中删除包括 csproj 在内的额外文件
【发布时间】:2014-06-10 10:09:54
【问题描述】:

我有一个自动构建过程设置为从 TFS 中的构建定义运行,它发布 Web 应用程序并通过在构建过程定义中作为 msbuild 参数传递的发布配置文件成功生成/执行数据库项目脚本。现在一切都按预期运行,除了几个不必要的文件被部署到目标文件夹,包括 .csproj 文件、所有配置转换和包含我所有发布配置文件的属性文件夹。

这很奇怪,因为 1. 它绝对不包括所有文件/文件夹,而且大多数似乎包括发布配置文件使用的文件/文件夹,如转换,同时正确应用转换并排除任何明确排除的文件(如 pubxml 中所定义) , 和 2. 如果我通过从 Visual Studio 2013 中的项目发布来完成此过程,则该过程完美运行。我将配置文件配置为仅包含应用程序所需的文件,并且我已在 csproj 文件中确认此属性存在.

我尝试在 pubxml 文件中从部署中排除属性文件夹,但这会导致构建崩溃,因为它找不到程序集文件。我收集到的是,该过程保留了完成构建所需的所有文件,并将所有这些文件放在我的目标文件夹中。 FWIW,我正在使用“文件系统”方法,但我不确定 web 部署是否会有所作为。我还不能通过 web 部署连接到目标服务器,但这是一个需要解决的单独问题。我可以配置构建中的某些内容,以便我的目标文件夹仅包含运行应用程序所需的文件,而不包含构建应用程序所需的文件?

仅供参考,我也没有使用放置文件夹,我不确定这是否会有所不同,但这可能是我唯一没有测试过的东西,因为我正在使用它似乎没有必要发布配置文件并且不想使用默认的 tfs 构建配置。

【问题讨论】:

    标签: msbuild visual-studio-2013 tfsbuild


    【解决方案1】:

    在阅读以下内容后,我找到了一个运行良好的解决方案:http://www.asp.net/web-forms/tutorials/deployment/advanced-enterprise-web-deployment/excluding-files-and-folders-from-deployment 这是一个比我想要的更难看的解决方案,因为它需要对排除文件的名称进行硬编码,但它可以解决问题,只需要在一个位置识别文件和文件夹,而不是为每个目标环境更改发布配置文件。我创建了一个 wpp.targets 文件并使用 ExcludeFromPackageFolders 和 ExcludeFromPackageFiles 元素来识别额外的文件。具有讽刺意味的是,如果我不在排除元素中命名 wpp.targets 文件,该文件将包含在我的包中。可能 MSDeploy 在 TFS 上与文件系统没有相同的问题,但在花了半天时间尝试解决一组不同的问题和权限解决方法后,我们认为文件系统是一种更干净的发布方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2011-02-08
      • 2021-07-07
      • 2014-12-13
      • 1970-01-01
      相关资源
      最近更新 更多