2011-11-15 53 views
1

由TFS 2010 Build创建的包仅包含源代码,而不包含二进制文件。当(自动)部署到IIS时,该站点不会运行,因为它缺少在构建过程中创建的DLL。TFSBuild 2010包仅包含源代码 - 不包含二进制文件

我们在VS2010中创建了一个Web项目。如果我在VS中右键单击选择“构建部署包”,我们会在包含完整构建站点的obj \ Release \ Package文件夹中获得一个zip文件。但是,如果要求我们的TFS构建过程通过在MSBuild参数中添加“/ p:CreatePackageOnPublish = true/p:DeployOnBuild = true”来创建包(如其他地方建议的here),我们会得到一个zip文件在仅包含来源的_PublishedWebsites \ _Package \ .zip中。

我最好的猜测是CopyAllFilesToSingleFolderForPackage是从错误的地方拿起文件。

我注意到类似的问题在这里问 - TFS 2010 and creating a package - 虽然他的解决方法在许多情况下不合适,我猜。

我担心的是,这是使用MSBuild/TFS的一个内置的,但记录不完善的功能,所以当它不起作用时,你有点在荒野中。

+0

我注意到一群有同样问题的人没有从MSDN论坛上获得乐趣 - http://social.msdn.microsoft.com/Forums/en-GB/tfsbuild/thread/314b6c8e-780e-48ec-8d55 -ed409cb4ff42 –

+2

经过一番挖掘,我认为这是因为VS将二进制文件构建到项目目录中,但TFS将它们构建到单独的“Binaries”文件夹中。我很困惑,为什么很多人似乎没有遇到这个问题。 –

回答

1

看来,deployOnBuild在每个项目上运行一些“包”类目标。如果您已将项目构建到单独的目录中(默认情况下默认使用默认的TFS 2010版本),则包装将不会拾取编译的文件。

一个解决方案是摆脱TFS构建工作流程中MSBuild命令的自定义输出文件夹。这将导致编译后的文件被原位定位并被包含在软件包中。

现在TFS工作流程的其余部分需要一些更改,因为它会期望从输出目录传输文件,并且它们不会在那里。

相关问题