TFS构建在目标文件夹中删除包括csproj在内的额外文件

时间:2014-04-24 21:48:31

标签: msbuild visual-studio-2013 tfsbuild

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

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

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

仅供参考我还没有使用过丢弃文件夹,我不确定这是否有所作为,但这可能是我唯一没有经过测试的东西,因为它看起来并不像因为我使用了发布配置文件并且不想使用默认的tfs构建配置,所以必须这样做。

1 个答案:

答案 0 :(得分:1)

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