【发布时间】:2014-05-01 16:18:40
【问题描述】:
我已经检查了我在 StackOverflow 和各种 Google 链接上找到的所有问题,但没有找到。
我们有 3 台不同的服务器,需要将最后 3 个版本之一部署到它。这就是我在本地构建级别上处理它的方式:
<PostBuildEvent>
start xcopy /Y /Q "$(TargetDir)EncompassSDKDlls\$(ConfigurationName)\*.*" "$(TargetDir)"
</PostBuildEvent>
而且效果很好。但是,当它尝试进行部署时,它会在此之前运行它。我确实尝试过做一些事情,例如:MSDeploy Extra Files,但这似乎并没有复制部署中的文件,只是复制了 bin 目录中的原始文件。
这是我最后尝试的:
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="Dlls\$(ConfigurationName)\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
【问题讨论】:
-
我最近成功地将构建后步骤转变为构建前步骤。它的步骤实际上并不依赖于构建中产生的任何东西。然后我可以使用
<FilesForPackagingFromProject/>收集它们以进行部署。 -
看起来好像你想运行一个 Post Build Step,但在这种情况下它实际上是一个 Post Deploy 步骤?我做对了吗?很难理解“当它尝试进行部署时,它会在此之前运行它”是什么意思。
-
谢谢约翰,准备试试看。会让你知道的。
-
Domin8urMind - 我正在尝试根据配置将文件复制到 bin 文件夹中(配置告诉我正在构建哪个 API 版本),以便在部署的 Web 服务中包含正确的 API DLL .
标签: asp.net teamcity msdeploy webdeploy