The*_*Sky 23 msbuild clickonce
我正在尝试制作一个批处理文件,只需点击一下即可发布我们拥有的少数ClickOnce应用程序.我正在使用msbuild,作为示例,下面的命令行显示了我是如何做到的:
msbuild
MyApp.sln
/t:Publish
/p:Configuration=Release
/p:PublishUrl="C:\Apps\"
/v:normal > Log.txt
Run Code Online (Sandbox Code Playgroud)
(包装更容易阅读)
当我运行上面的命令时,它在发布目录中构建并发布应用程序,即bin\release!知道为什么msbuild在上面的例子中不尊重PublishUrl属性吗?
PS:我尝试了不同的组合,包括删除'配置',使用'重建'和'发布'作为目标,并删除引号但没有任何成功.
提前致谢,
埃萨姆
wal*_*ark 38
您正在设置错误的属性.请尝试使用PublishDir.
您可以按原样将其传递给msBuild,也可以在项目文件中设置它(或者也可以在sln文件中设置它,不确定我总是使用项目文件.)像这样
<PropertyGroup>
<PublishDir>C:\Dev\Release\$(BuildEnvironment)\</PublishDir>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我刚刚在MsBuild和ClickOnce上做了一些博客文章,看看你应该"发现它们有用......"
祝好运 :-)
Gam*_*lor 15
某些功能由Visual Studio实现,而不是由MSBuild脚本完成.因此,从命令行执行时,单击一次部署的行为会有所不同.
例如,您可以将PublishURL设置为FTP路径,并将InstallURL设置为Web URL.在这种情况下,PublishURL仅在IDE中用于传输文件,但不在命令行构建中使用.最后,如果要发布ClickOnce应用程序,可以使用UpdateUrl,该应用程序从安装它的单独位置更新自身.
我已经创建了一个特殊的MSBuild文件来完成这些工作.它运行发布目标并将文件复制到正确的位置.
alhambraeidos要求的构建文件示例.它基本上运行常规VisualStudio-build,然后将click-once数据复制到真实版本文件夹.请注意,删除了一些项目特定的东西,所以它可能会被打破.此外,它不会增加构建数量.这是由我们的Continues-Build-Server完成的:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- the folder of the project to build -->
<ProjLocation>..\YourProjectFolder</ProjLocation>
<ProjLocationReleaseDir>$(ProjLocation)\bin\Release</ProjLocationReleaseDir>
<ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
<!-- This is the web-folder, which provides the artefacts for click-once. After this
build the project is actually deployed on the server -->
<DeploymentFolder>D:\server\releases\</DeploymentFolder>
</PropertyGroup>
<Target Name="Publish" DependsOnTargets="Clean">
<Message Text="Publish-Build started for build no $(ApplicationRevision)" />
<MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Publish"/>
<ItemGroup>
<SchoolPlannerSetupFiles Include="$(ProjPublishLocation)\*.*"/>
<SchoolPlannerUpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/>
</ItemGroup>
<Copy
SourceFiles="@(SchoolPlannerSetupFiles)"
DestinationFolder="$(DeploymentFolder)\"
/>
<Copy
SourceFiles="@(SchoolPlannerUpdateFiles)"
DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"
/>
<CallTarget Targets="RestoreLog"/>
</Target>
<Target Name="Clean">
<Message Text="Clean project:" />
<MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Clean"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19295 次 |
最近记录: |