【发布时间】:2014-07-10 12:23:45
【问题描述】:
我有一个奇怪的问题,我的一个构建无法创建其他类似构建正在创建的 Web 部署包。我正在运行 TFS 2013.2,我的所有客户端都是 VS2013.2。构建服务器也是 TFS 2013.2。 Web 应用程序是 .NET 4.5.1。
该解决方案的目的是使用 web deploy(发布配置文件)构建和部署两个 Web 应用程序。第一个应用程序可以很好地编译和部署。第二个非常奇怪地失败了。
我认为正在发生的事情的要点是构建服务正在将源文件复制到要压缩的临时位置。这是日志中的一部分:
CopyAllFilesToSingleFolderForPackage:
Creating directory "obj\Development\Package\PackageTmp".
Copying all files to temporary location below for package/publish:
obj\Development\Package\PackageTmp.
Copying Scripts\path\production\Constants.js to obj\Development\Package\PackageTmp\Scripts\path\production\Constants.js.
Copying Scripts\path\production\Directives.js to obj\Development\Package\PackageTmp\Scripts\path\production\Directives.js.
Copying Scripts\path\production\ProductModule.js to obj\Development\Package\PackageTmp\Scripts\path\production\ProductModule.js.
Copying Scripts\path\production\Controllers.js to obj\Development\Package\PackageTmp\Scripts\path\production\Controllers.js.
Copying Scripts\path\production\Models.js to obj\Development\Package\PackageTmp\Scripts\path\production\Models.js.
Copying Scripts\path\production\Services.js to obj\Development\Package\PackageTmp\Scripts\path\production\Services.js.
Copying Scripts\path\path3\path3Controller.js to obj\Development\Package\PackageTmp\Scripts\path\path3\path3Controller.js.
Copying Scripts\path\path3\path3Module.js to obj\Development\Package\PackageTmp\Scripts\path\path3\path3Module.js.
Copying Scripts\path\path3\Directives.js to obj\Development\Package\PackageTmp\Scripts\path\path3\Directives.js.
Copying Scripts\path\path3\Filters.js to obj\Development\Package\PackageTmp\Scripts\path\path3\Filters.js.
Copying Scripts\path\path3\DetailController.js to obj\Development\Package\PackageTmp\Scripts\path\path3\DetailController.js.
Copying Scripts\path\path3\ListController.js to obj\Development\Package\PackageTmp\Scripts\path\path3\ListController.js.
Copying Scripts\path\path3\Models.js to obj\Development\Package\PackageTmp\Scripts\path\path3\Models.js.
Copying Scripts\path\path3\Services.js to obj\Development\Package\PackageTmp\Scripts\path\path3\Services.js.
CleanWebsitesWPPAllFilesInSingleFolder:
Removing directory "obj\Development\Package\PackageTmp".
您可以看到它正在从源复制到某个临时目录。之后,无论出于何种原因,它都会立即删除该目录。
然后,它会运行许多其他操作,例如
ValidateGlobalPackageSetting
CollectFilesFromIntermediateAssembly
CollectFilesFromContent
CollectFilesFromIntermediateSatelliteAssembliesWithTargetPath
CollectFilesFromReference
CollectFilesFromAllExtraReferenceFiles
CollectFilesFrom_binDeployableAssemblies
PipelineCollectFilesPhase
PreTransformWebConfig
TransformWebConfigCore
PostTransformWebConfig
PreProfileTransformWebConfig
PipelineTransformPhase
GetMSDeployInstalledVersionPath
ProcessPublishDatabaseSettings
PreAutoParameterizationWebConfigConnectionStrings
AutoParameterizationWebConfigConnectionStringsCore
PostAutoParameterizationWebConfigConnectionStrings
PipelineMsdeploySpecificTransformPhase
GenerateGlobalPublishSetting
然后我们到了这次似乎想要真正创建发布包的地方
CopyAllFilesToSingleFolderForMsdeploy
Creating directory "obj\Development\Package\PackageTmp".
Copying all files to temporary location below for package/publish:
obj\Development\Package\PackageTmp.
Copying obj\Development\Package\PackageTmp\Scripts\path\path2\Constants.js to obj\Development\Package\PackageTmp\Scripts\path\path2\Constants.js.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(2660,5): error : Copying file obj\Development\Package\PackageTmp\Scripts\path\path2\Constants.js to obj\Development\Package\PackageTmp\Scripts\path\path2\Constants.js failed. Could not find file 'obj\Development\Package\PackageTmp\Scripts\path\path2\Constants.js'. [D:\Builds\1\path.Web\Portal_Dev\Sources\Portal\Trunk\Code\path.Portal\path.Portal.Web\path.Portal.Web.csproj]
Done Building Project "D:\Builds\1\path.Web\Portal_Dev\Sources\Portal\Trunk\Code\path.Portal\path.Portal.Web\path.Portal.Web.csproj" (default targets) -- FAILED.
奇怪的是它不是从源代码复制的。它正在尝试从临时位置复制。首先,临时位置已经被清除。其次,从 obj\Package 复制到 onj\Package 而不是从 Scripts\ 复制到 onj\Package 真的没有任何意义
这是我正在使用的 msdeploy 参数。它在几个不同的版本上都可以正常工作。
/p:DeployOnBuild=true;PublishProfile=Development;DeployTarget=MSDeployPublish;MSDeployPublishMethod=RemoteAgent;MsDeployServiceUrl=http://someServer:9090;SkipExtraFilesOnServer=true;username=
我的构建模板有点旧,但我没有遇到任何其他构建或部署的问题。
我知道我应该提供更多的东西。请让我知道我还可以添加什么来帮助解决问题
编辑:我在标题中提到了打字稿。它试图复制的所有文件都是从 Typescript 生成的 JS 文件。他们都正确设置了构建操作。此解决方案中的另一个我们应用程序项目根本没有打字稿,并且构建和部署良好。
另外值得一提的是,如果我使用命令行参数中指定的配置文件从 Visual Studio 手动发布,一切都部署得很好。
【问题讨论】:
标签: tfs visual-studio-2013 tfsbuild webdeploy