我有一个asp.net MVC项目和前端,通过npm命令构建。
此文件夹不包含在我的csproj文件中。
当我从teamcity部署时,我使用了2个步骤。
但是ftp部署非常慢。 如何将此文件夹部署为' package'?
也许我可以动态地将它包含到csproj文件中, 或者是其他东西?
答案 0 :(得分:3)
但是ftp部署非常慢。如何将此文件夹部署为 '包'?
实际上,FTP部署包含许多文件的文件夹会比较慢。因为它只打开一个线程,并且一次只上传一个文件。您可以考虑通过MSBuild目标来压缩该文件夹:
<ItemGroup>
<Content Include="app\**\*.*" />
</ItemGroup>
<Import Project="..\.build\MSBuild.Community.Tasks.Targets" />
<Target Name="AfterBuild">
<PropertyGroup>
<ZipPackagePath>bin</ZipPackagePath>
</PropertyGroup>
<Zip Files="@(Link)" WorkingDirectory="$(ZipPackagePath)" ZipFileName="output\ZipName.zip" ZipLevel="9" />
</Target>
注意:您需要添加nuget包“MSBuildTasks”,您可以将ReleasePath更改为其他文件夹。
但是你仍然需要在FTP部署后解压缩该zip文件。
也许我可以将它动态地包含在csproj文件中,或者其他东西 别的?
或者,您可以动态地将其包含到您的项目文件中,这是我们的建议。
要完成此操作,请卸载您的项目。然后在项目的最后,就在结束标记之前,放在脚本下面:
<Target Name="AddAppFiles" AfterTargets="Build">
<ItemGroup>
<Content Include="app\**\*.*" />
</ItemGroup>
</Target>
发布后,app文件夹包含在目标位置:
注意:
使用此目标,文件夹app
不会出现在解决方案资源管理器中(动态包含)。
如果在构建完成后生成app
文件夹,则可以更改
AfterTargets="Build"
至BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
,例如:
<Target Name="AddAppFiles" BeforeTargets="_CheckForInvalidConfigurationAndPlatform">