我通过右键单击项目在Visual Studio中使用publish to folder
选项 - >发布 - >发布到文件夹。结果始终是带有应用转换的准备复制项目。
我想使用VSTS自动执行此过程,并在VSTS上进行设置
我用了下一步:
- NuGet restore
- Build solution
- Publish Build Artifacts
至$(build.artifactstagingdirectory)
- 使用Windows machine file copy
和$(build.artifactstagingdirectory)
admin login
到远程计算机的password
最后我在具有复杂文件夹结构的远程机器上获得了zip包,而根本没有应用转换。
怎么了?我如何设置与Visual Studio中相同的“发布到文件夹”,但使用VSTS?
答案 0 :(得分:5)
将以下目标添加到.csproj以启用转换配置文件
<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'">
<ItemGroup>
<DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" />
</ItemGroup>
<TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" />
<Delete Files="@(DeleteAfterBuild)" /></Target>
在构建解决方案步骤中添加以下构建参数“/ p:TransformConfigFiles = true”将使用上面添加的目标进行配置转换.csproj
/p:TransformConfigFiles=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:OutDir="$(build.stagingDirectory)"
然后,您可以使用发布步骤发布$(build.stagingDirectory)内容。如果只需要网站输出,可以使用$(build.stagingDirectory)_PublishedWebsites作为发布路径。
这将允许您获取ms部署包以及xcopy部署已发布的网站文件。
您可以在发布任务之前使用复制文件任务复制任何其他文件(如果您有任何$(build.stagingDirectory))并将其作为构建工件发布。
将VSTS release management与deployment groups一起使用,将您的应用程序部署到目标服务器。您可以使用IIS deploy task使用ms deploy package部署到IIS。如果您使用的是Web部署包,则可以在Web应用程序中使用parameters.xml来获取分配给.setparameters.xml的Web配置参数,以便您可以使用IIS部署任务更改部署时间中的值。
答案 1 :(得分:5)
您正在通过文件系统方法发布Web应用程序,它基于指定的配置(例如Debug,Release)来转换web.config。因此,您需要检查在构建解决方案任务中指定的配置(例如,Visual Studio构建任务)
简单的任务:
/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish
;平台:$(BuildPlatform)
;配置:$(BuildConfiguration)
)注意: BuildPlatform 和 BuildConfiguration 是构建变量。它会将web应用程序发布到工件目录([代理工作文件夹] / 1 / a)