从Visual Studio 2015自动发布构建的Web应用程序

时间:2017-03-13 10:23:54

标签: .net visual-studio-2015 publish

有没有办法在成功构建时使用预先创建的发布配置文件自动发布Web应用程序? 我不想在Visual Studio 2015上单击发布图标,需要在成功构建Web项目时执行此操作 - 不使用宏。

任何样品都会受到赞赏!

3 个答案:

答案 0 :(得分:2)

Rami的解决方案有效,但它需要另一个" Build"通过。虽然这实际上不会重新编译,但如果你的解决方案很大,它仍然会造成不必要的延迟。

您无法通过DeployOnBuild触发网络发布,因为从Visual Studio构建时会自动禁用该网站。

但是,您可以通过某些MSBuild技巧触发该过程作为同一MSBuild调用的一部分:

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

还有:

<!-- 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>

如果您在进行内容更改时发现您的发布项目尚未构建,请添加以下内容:

<!-- csproj ONLY, won't work elsewhere -->
<PropertyGroup>
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>

答案 1 :(得分:1)

尝试如下,

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

你必须在项目属性中传递以下作为构建参数。

/p:DeployOnBuild=true 
/p:PublishProfile=<profile-name>

答案 2 :(得分:1)

将以下内容添加到项目文件中: <Target Name="AfterBuild"> <MSBuild Condition="'$(DeployOnBuild)'!='true'" Projects="$(MSBuildProjectFullPath)" Properties="DeployOnBuild=true;PublishProfile=Local;BuildingInsideVisualStudio=False"/> </Target>

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