TFS 2010 Build创建的包只包含我们的Sources,而不包含二进制文件。当(自动)部署到IIS时,该站点不会运行,因为它缺少在构建过程中创建的DLL。
我们在VS2010中创建了一个Web项目。如果我在VS中右键单击选择“Build Deployment Package”,我们会在包含完全构建站点的obj \ Release \ Package文件夹中获得一个zip文件。
但是,如果要求我们的TFS构建过程通过将“/ p:CreatePackageOnPublish = true / p:DeployOnBuild = true”添加到MSBuild参数(在其他地方here中建议)来创建包,我们得到_PublishedWebsites \ _Package \ .zip中只包含源的zip文件。
我最好的猜测是CopyAllFilesToSingleFolderForPackage正在从错误的位置拾取文件。
我注意到这里问了一个类似的问题 - TFS 2010 and creating a package - 虽然他的解决办法在很多情况下都不合适,但我猜。
我担心的是,这是使用MSBuild / TFS的内置但记录不佳的功能,所以当它不起作用时,你会在荒野中稍微有点。
答案 0 :(得分:1)
似乎deployOnBuild在每个项目上运行一些类似“包”的目标。如果您已将项目构建到单独的目录(默认情况下默认的TFS 2010构建版本),则打包将不会获取已编译的文件。
一种解决方案是在TFS构建工作流程中删除MSBuild命令的自定义输出文件夹。这将导致编译的文件位于原位并包含在包中。
现在,TFS工作流的其余部分需要进行一些更改,因为它会期望从输出目录传输文件,但它们不会存在。