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

ace*_*ita 8 .net publish visual-studio-2015

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

任何样品将不胜感激!

Ram*_* A. 6

将以下内容添加到您的项目文件中:

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

PublishProfileLocal在上面的例子)是发布配置要运行的名称。

来源:
https : //www.dotnetcatch.com/2017/03/24/publish-webdeploy-automatically-with-vs-build/
/sf/answers/2928130341/

  • 这个解决方案对我来说效果很好。我使用了 `&lt;Target Name="PostBuild" AfterTargets="PostBuildEvent"&gt;` 并将 MSBuild 任务的条件修改为仅在发布版本上运行: `Condition=" '$(DeployOnBuild)' != 'true' 和 '$ (配置)|$(平台)' == '发布|任何CPU' "`. (2认同)

Ric*_*lay 6

Rami 的解决方案有效,但它需要另一个“构建”通道。虽然这实际上不会重新编译,但如果您的解决方案很大,它仍然会导致不必要的延迟。

您无法触发 Web 发布,DeployOnBuild因为它在从 Visual Studio 构建时会自动禁用。

但是,您可以通过一些 MSBuild 技巧,在同一 MSBuild 调用中触发该过程:

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

并且:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

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

<!-- csproj ONLY, won't work elsewhere -->
<PropertyGroup>
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


kab*_*ram 2

尝试像下面这样,

msbuild mysln.sln /p:DeployOnBuild=true /p:PublishProfile=<profile-name>
Run Code Online (Sandbox Code Playgroud)

您必须将以下内容作为构建参数传递到项目属性中。

/p:DeployOnBuild=true 
/p:PublishProfile=<profile-name>
Run Code Online (Sandbox Code Playgroud)