Problems using MsBuild using command line for Publish Click Once

前端 未结 3 1336
慢半拍i
慢半拍i 2020-12-05 07:38

I have Windows application in csproj in my solution, and I want generate Publish using command line (bat, cmd).

My script is (I put \\r\\n for better re

相关标签:
3条回答
  • 2020-12-05 08:19

    I don't know if this is a problem, but I noticed that you pass the /target parameter twice?

    you could you use a semi-colon delimited example:

    /target:rebuild;publish
    

    MSDN Documentation on command line parameters and MSBuild

    If that also does not work you could perhaps try to debug it by passing

    /verbosity:diag
    
    0 讨论(0)
  • 2020-12-05 08:22

    Use PublishDir instead of PublishUrl when running from command line.

    msbuild /target:publish /p:Configuration=Release;PublishDir=c:\playground\
    

    You can also change version, like ApplicationRevision=666;MinimumRequiredVersion=1.1

    0 讨论(0)
  • 2020-12-05 08:36

    Take a look at this Stack Overflow question. Basically the PublishUrl property is ignored when running ClickOnce from the command line. But you can easily add the behaviour with an additional MSBuild-task.

    I've created an additional MSBuild-File, for example a build.csproj. This contains a publish-task. This task first invokes the regular MS-Build of the target-project. Afterwards it copies the result to the publish-directory. Now I invoke the 'build.csproj' instead of the reguar project-file from the command-line:

        <?xml version="1.0" encoding="utf-8"?>
        <Project ToolsVersion="3.5" DefaultTargets="Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
          <PropertyGroup>
            <!-- project name-->
            <ProjectName>MyExampleProject</ProjectName> 
            <!--properties for the project-build-->
            <DefaultBuildProperties>Configuration=Release</DefaultBuildProperties> 
            <!-- location of the click-once stuff, relative to the project -->
            <ProjectPublishLocation>.\bin\Release\app.publish</ProjectPublishLocation> 
            <!-- Location you want to copy the click-once-deployment. Here an windows-share-->
            <ProjectClickOnceFolder>\\TargetServer\deployments</ProjectClickOnceFolder> 
          </PropertyGroup>
          <Target Name="Publish" DependsOnTargets="Clean">
            <Message Text="Publish-Build started for build no $(ApplicationRevision)" />
            <!-- run the original build of the project -->
            <MSBuild Projects="./$(ProjectName).csproj"
            Properties="$(DefaultBuildProperties)"
            Targets="Publish"/>
            <!-- define the files required for click-once-->
            <ItemGroup>
              <SetupFiles Include="$(ProjectPublishLocation)\*.*"/>
              <UpdateFiles Include="$(ProjectPublishLocation)\Application Files\**\*.*"/>
            </ItemGroup>
            <!-- and copy them -->
            <Copy
            SourceFiles="@(SetupFiles)"
            DestinationFolder="$(ProjectClickOnceFolder)\"/>
            <Copy
            SourceFiles="@(UpdateFiles)"
            DestinationFolder="$(ProjectClickOnceFolder)\Application Files\%(RecursiveDir)"/>
          </Target>
          <Target Name="Clean">
            <Message Text="Clean project" />
            <MSBuild Projects="./$(ProjectName).csproj"
            Properties="$(DefaultBuildProperties)"
            Targets="Clean"/>
          </Target>
        </Project>
    
    0 讨论(0)
提交回复
热议问题