Automatically publish web application on build from Visual Studio 2015

后端 未结 3 420
感情败类
感情败类 2021-01-12 11:07

Is there any way to automatically have a web application published using a pre-created publish profile on successful build? I don\'t want to have to click the publish icon,

相关标签:
3条回答
  • 2021-01-12 11:54

    Rami's solution works, but it requires another "Build" pass. While this won't actually recompile, it will still cause unnecessary delay if your solution is large.

    You can't trigger the web publish via DeployOnBuild as that's automatically disabled when building from Visual Studio.

    You can, however, trigger the process as part of the same MSBuild invocation via some MSBuild trickery:

    <!-- In Directory.Build.props or the csproj (before the web targets import) -->
    <PropertyGroup>
      <PublishProfile>Local</PublishProfile>
    </PropertyGroup>
    

    And also:

    <!-- After the above, or in ProjectName.wpp.targets -->
    <PropertyGroup>
      <AutoPublish Condition="'$(AutoPublish)' == '' and '$(Configuration)' == 'Debug' and '$(BuildingInsideVisualStudio)' == 'true' and '$(PublishProfile)' != ''">true</AutoPublish>
    
      <AutoPublishDependsOn Condition="'$(AutoPublish)' == 'true'">
        $(AutoPublishDependsOn);
        WebPublish
      </AutoPublishDependsOn>
    </PropertyGroup>
    
    <Target Name="AutoPublish" AfterTargets="Build" DependsOnTargets="$(AutoPublishDependsOn)">
    </Target>
    

    If you're finding that your publish project isn't being built when you make content changes, add the following:

    <!-- csproj ONLY, won't work elsewhere -->
    <PropertyGroup>
      <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
    </PropertyGroup>
    
    0 讨论(0)
  • 2021-01-12 12:00

    Try like below,

    msbuild mysln.sln /p:DeployOnBuild=true /p:PublishProfile=<profile-name>
    

    you have to pass following as build parameter in the project property.

    /p:DeployOnBuild=true 
    /p:PublishProfile=<profile-name>
    
    0 讨论(0)
  • 2021-01-12 12:04

    Add the following to your project file:

    <Target Name="AfterBuild">
      <MSBuild Condition="'$(DeployOnBuild)'!='true'" Projects="$(MSBuildProjectFullPath)" Properties="DeployOnBuild=true;PublishProfile=Local;BuildingInsideVisualStudio=False"/>
    </Target>
    

    The value of PublishProfile (Local in the example above) is the name of the publish profile you want to run.

    Sources:
    https://www.dotnetcatch.com/2017/03/24/publish-webdeploy-automatically-with-vs-build/
    https://stackoverflow.com/a/41830433/90287

    0 讨论(0)
提交回复
热议问题