有没有办法在成功构建时使用预先创建的发布配置文件自动发布Web应用程序? 我不想在Visual Studio 2015上单击发布图标,需要在成功构建Web项目时执行此操作 - 不使用宏。
任何样品都会受到赞赏!
答案 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