我目前通过右键单击.csproj手动发布ClickOnce应用程序。有没有办法可以直接从解决方案中做同样的事情,这样我就可以将它与构建定义一起用于持续集成?
答案 0 :(得分:3)
您无法直接从解决方案发布ClickOnce应用程序,但您可以使用XAML构建和vNext构建构建和发布ClickOnce应用程序,并使用MSBuild参数“/ target:publish”使MSBuild创建ClickOnce发布文件夹。以下是两个博客,其中包含构建和发布ClickOnce应用程序的详细步骤:
使用Team Build / VSO构建和发布ClickOnce应用程序,请参阅博客:http://blogs.msdn.com/b/tfssetup/archive/2015/09/15/build-and-publish-a-clickonce-app-using-team-build-vso.aspx
使用build vNext构建ClickOnce应用,请参阅博客:http://blogs.msdn.com/b/tfssetup/archive/2015/10/15/building-clickonce-apps-using-build-vnext.aspx
假设您正在使用XAML构建,那么我想通过XAML构建突出显示博客中的要点。要使用Team Build实现构建和发布ClickOnce应用程序,您需要使用以下步骤编辑XAML构建定义:
在项目属性中设置发布路径,该路径对应于目标。然后将您的项目签入TFS。
创建模板TFVCTemplate.12.xaml的副本以进行自定义。为了使构建过程获得一些环境数据,您需要:
创建两个环境变量--DropLocation和WorkingDirectory。
从工具框中添加两个GetEnvironmentVariable类型的事件。在流程中的任何地方添加它们。
使用第一个设置变量DropLocation,数据为“Microsoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables.DropLocation”。
使用第二个变量将变量WorkingDirectory设置为数据“Microsoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables.BuildDirectory”。
创建DestinationLocation类型的新参数,并使用String类型设置为In。这将用于保存最终数据的位置(文件位置)。
我们编辑XAML构建定义的原因是MsBuild完成ClickOnce发布的方式。 MSBuild发布不会将文件副本复制到目标,它会在bin中创建一个文件夹并将文件放在那里。
默认情况下,TFS会将bin文件夹复制到输出放置位置。但我们需要app.publish文件夹。为了找到从发布文件夹中获取已发布文件的方法。你需要:
在模板中搜索“复制二进制文件以删除”活动。
在属性中写入现有的源位置(可能是bin文件夹,如WorkingDirectory +“\ src \ Desktop \ TeamAdmin \ ClickOnceTest \ ClickOnceTest),就像这样 - WorkingDirectory +”\ src \ Desktop \ TeamAdmin \ ClickOnceTest \ ClickOnceTest \ BIN \调试\ app.publish”。
添加事件CreateDirectory,再次创建目录。我们可以使用之前创建的目标位置变量。并将文件从放置位置复制到所需位置。
现在我们可以创建一个新的构建定义并输入DestinationLocation和MSBuildArguments“/ target:publish”的值并对构建进行排队。