定义应在项目成功发布后执行的自定义 MSBuild 目标,通过 VS 2019 中的上下文菜单发布
Define custom MSBuild target that should execute after successful project Publish via context menu in VS 2019
我正在尝试在我的 .csproj 文件中定义一个自定义 <Target>
,它应该在项目成功发布后 运行。我试过这些,但其中 none 个被调用:
<Target Name="MyTarget" AfterTargets="AfterPublish">
...
</Target>
<Target Name="MyTarget" AfterTargets="Publish">
...
</Target>
<Target Name="AfterPublish">
...
</Target>
如果,OTOH,我尝试连接到 AfterBuild 目标,一切都按预期工作。不幸的是,我不希望我的目标在每次构建后都达到 运行。我只希望它在我发布项目后 运行,这目前是手动操作 - 即我没有使用任何 CI/CD、ClickOnce、WebDeploy 或任何其他自动化管道。
从我在互联网上读到的内容来看,这可能是让我感到困惑的原因,因为 BeforePublish/AfterPublish 任务似乎不是由上下文菜单选项(即解决方案资源管理器 -> 右键单击我的项目 -> 发布...)。不过,我仍然有疑问,因为在手动发布之后,“输出”面板包含的发布信息看起来可能来自某处的 .targets 文件。
FWIW,我的发布配置文件定义为将应用程序输出到本地文件夹。
在这种情况下执行自定义目标的正确方法是什么?
我通过将项目类型切换为 .NET Framework 控制台应用程序(最初,我有一个 .NET Core 控制台应用程序)并挂接到 ClickOnce 的 AfterPublish 目标来解决我的问题。
我认为 .NET Core 项目无法连接到 MSBuild 发布相关目标真的很奇怪,因为发布命令在解决方案资源管理器的上下文菜单中很容易获得。这也是部署到多个平台的唯一方法,在这些平台上拥有各种自定义后目标将非常有用。也许我遗漏了什么,但它看起来真的像是一个疏忽...
幸运的是,在这种特殊情况下我不关心选择哪种项目类型,因此 .NET Framework 和 ClickOnce 的组合完全没问题。当我发布时,我只需要我的目标 运行,它现在可以工作了。
我正在尝试在我的 .csproj 文件中定义一个自定义 <Target>
,它应该在项目成功发布后 运行。我试过这些,但其中 none 个被调用:
<Target Name="MyTarget" AfterTargets="AfterPublish">
...
</Target>
<Target Name="MyTarget" AfterTargets="Publish">
...
</Target>
<Target Name="AfterPublish">
...
</Target>
如果,OTOH,我尝试连接到 AfterBuild 目标,一切都按预期工作。不幸的是,我不希望我的目标在每次构建后都达到 运行。我只希望它在我发布项目后 运行,这目前是手动操作 - 即我没有使用任何 CI/CD、ClickOnce、WebDeploy 或任何其他自动化管道。
从我在互联网上读到的内容来看,这可能是让我感到困惑的原因,因为 BeforePublish/AfterPublish 任务似乎不是由上下文菜单选项(即解决方案资源管理器 -> 右键单击我的项目 -> 发布...)。不过,我仍然有疑问,因为在手动发布之后,“输出”面板包含的发布信息看起来可能来自某处的 .targets 文件。
FWIW,我的发布配置文件定义为将应用程序输出到本地文件夹。
在这种情况下执行自定义目标的正确方法是什么?
我通过将项目类型切换为 .NET Framework 控制台应用程序(最初,我有一个 .NET Core 控制台应用程序)并挂接到 ClickOnce 的 AfterPublish 目标来解决我的问题。
我认为 .NET Core 项目无法连接到 MSBuild 发布相关目标真的很奇怪,因为发布命令在解决方案资源管理器的上下文菜单中很容易获得。这也是部署到多个平台的唯一方法,在这些平台上拥有各种自定义后目标将非常有用。也许我遗漏了什么,但它看起来真的像是一个疏忽...
幸运的是,在这种特殊情况下我不关心选择哪种项目类型,因此 .NET Framework 和 ClickOnce 的组合完全没问题。当我发布时,我只需要我的目标 运行,它现在可以工作了。