首页 > 解决方案 > 如何在 MSBuild 编译时添加 azure 函数的绑定?

问题描述

我在 Visual Studio 中有一个天蓝色函数 C# 项目,它有一些服务总线主题触发器。我有一个 powershell 脚本,可以运行它来复制 bin 中生成的 function.json 文件并将它们转换为队列绑定。唯一的问题是 azure 函数在名为_GenerateFunctionsPostBuild的 Build 目标之后在 msbuild 中引入了一个私有目标。因此,我正在尝试寻找一种在此步骤之后运行 powershell 脚本的方法,这样我的更改就不会被 azure 函数的独特构建擦除。

标签: c#visual-studiopowershellazuremsbuild

解决方案


因此,我正在尝试寻找一种在此步骤之后运行 powershell 脚本的方法,这样我的更改就不会被 azure 函数的独特构建擦除。

为此,您可以在 target 之后添加一个自定义来执行 powershell 脚本_GenerateFunctionsPostBuild,例如<Target Name="InvokePowerShell" AfterTargets="_GenerateFunctionsPostBuild">.

详细步骤:

  1. 在您的项目中,选择 Edit YourProjectName.csproj

  2. 在项目的最后,就在 end-tag 之前</Project> ,放置以下脚本:

    <Target Name="InvokePowerShell" AfterTargets="_GenerateFunctionsPostBuild">
    
      <PropertyGroup>
        <PowerShellExe Condition=" '$(PowerShellExe)'=='' ">
        %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
        </PowerShellExe>
        <ScriptLocation Condition=" '$(ScriptLocation)'=='' ">
        C:\Path With Spaces\LogDeploy.ps1
        </ScriptLocation>
        <LogFileLocation Condition=" '$(LogFileLocation)'=='' ">
        C:\Path With Spaces\ContactManagerDeployLog.txt
        </LogFileLocation>
      </PropertyGroup>
      <Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted 
                 -command &quot;&amp; { 
                          &amp;&apos;$(ScriptLocation)&apos; 
                          &apos;$(LogFileLocation)&apos; 
                          &apos;$(MSDeployComputerName)&apos;} &quot;" />
    
    </Target>
    

然后 powershell 脚本将在 target 之后执行_GenerateFunctionsPostBuild

对于目标构建顺序从 MSBuild 项目文件运行 Windows PowerShell 脚本,了解更多详细信息。

希望这可以帮助。


推荐阅读