Asp.net 如何将文件复制到主目录并部署
我已经检查了StackOverflow和各种Google链接上发现的所有问题,但没有找到这个 我们有3个不同的服务器,需要在其中部署最后3个版本中的一个。这就是我在本地构建级别处理它的方式:Asp.net 如何将文件复制到主目录并部署,asp.net,teamcity,msdeploy,webdeploy,Asp.net,Teamcity,Msdeploy,Webdeploy,我已经检查了StackOverflow和各种Google链接上发现的所有问题,但没有找到这个 我们有3个不同的服务器,需要在其中部署最后3个版本中的一个。这就是我在本地构建级别处理它的方式: <PostBuildEvent> start xcopy /Y /Q "$(TargetDir)EncompassSDKDlls\$(ConfigurationName)\*.*" "$(TargetDir)" </PostBuildEvent> 启动xcopy/Y/Q“$(
<PostBuildEvent>
start xcopy /Y /Q "$(TargetDir)EncompassSDKDlls\$(ConfigurationName)\*.*" "$(TargetDir)"
</PostBuildEvent>
启动xcopy/Y/Q“$(TargetDir)包含sdkdlls\$(配置名称)\*.*”$(TargetDir)
这很有效。但是,当它尝试进行部署时,会在部署之前运行它。我确实尝试过这样做:但这似乎并没有复制部署上的文件,只是复制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>
自定义文件;
$(将所有文件复制到SingleFolderForpPackageDependson);
自定义文件;
$(将所有文件复制到SingleFolderForpPackageDependson);
(文件名)%(扩展名)
我认为您可以在构建步骤中使用TeamCity的%build.number%参数来实现某些功能
您提到需要3台不同的服务器,它们需要部署最后3个版本中的一个
我们使用%build.number%作为打包步骤的参数,打包步骤将生成一个包含内部版本号的deloyment.zip文件
考虑以下打包构建步骤:
Build Step:
Runner type: MSBuild
Step Name: Package
Build file path: <path to ASP.NET project file >.csproj
Command line parameters:
/T:Package
/P:configuration =BUILD
/P:DeployServiceUrl=http://build.server:8091
/p:DeployIisAppPath="IIS_App_Name";PackageLocation ="c:\Packages\%build.number%\Iis_App_Name_%build.number%.zip"
/p:_PackageTempDir=c:\Packages\Temp
然后,您可以使用powershell脚本,该脚本将build.number作为参数,计算最后三个版本,并将它们部署到您需要的任何服务器
例如,以下TeamCity构建步骤将部署最新版本:
Build Step:
Runner type: MSBuild
Run : Custom Script
c:\Packages\100\Iis_App_Name_%build.number%.deploy.cmd /Y
希望这能有所帮助。成功了。副本确实需要在生成后事件中,但是FilesForPackagingProject没有识别新文件的所有正确设置。我想发布这封信,它可以帮助未来的任何人:
<ItemGroup>
<_CustomFiles Include="EncompassSDKDlls\$(ConfigurationName)\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
%(RecursiveDir)%(文件名)%(扩展名)
我最近成功地将后期构建步骤转变为预构建步骤。这一步实际上并不依赖于构建中生成的任何内容。然后,我可以使用
收集它们以进行部署。看起来您想运行后期构建步骤,但在本例中,这实际上是后期部署步骤?我说对了吗?很难理解您所说的“当它尝试进行部署时,它会在部署之前运行它”是什么意思。谢谢John,我将尝试一下。将让您知道。Domin8urMind-我正在尝试根据配置(配置告诉我正在生成哪个API版本)将文件复制到bin文件夹中,以便在部署的web服务中包含正确的API DLL。这将适用于我们控制生成号的项目,这些都是第三方库,所以我不认为这对我们有用。
<ItemGroup>
<_CustomFiles Include="EncompassSDKDlls\$(ConfigurationName)\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>