Search code examples
azureiisdeployment.net-coremicrosoft-web-deploy

Dotnet Core 1.1 Azure Deployment: No executable found matching command "dotnet-publish-iis"


I'm getting an issue with deploying via git to Azure. My app called Blogg keeps getting hung up when the PostCompile command runs after the app gets published to the server. That command is:

<Exec Command="dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" />

I was under the impression that the package reference for this command came from Microsoft.AspNetCore.Server.IISIntegration but even after adding versions 1.1.0-preview4-final and 1.1.2 (the latest), I'm still having troubles.

In case it's helpful, below are what's in my .csproj file:

`<Project ToolsVersion="15.0" Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp1.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="1.0.4" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.3" />
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.0-preview4-final" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.0.1" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.sqlserver.Design" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.0.0-msbuild2-final" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" />
  </ItemGroup>
  <ItemGroup>
    <None Include="wwwroot/*" CopyToPublishDirectory="Always" />
    <None Include="Views/*" CopyToPublishDirectory="Always" />
    <None Include="web.config" CopyToPublishDirectory="Always" />
  </ItemGroup>
  <Target Name="MyPostCompileTarget" AfterTargets="Publish">
    <Exec Command="dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" />
  </Target>
</Project>`

And the error I'm getting from the Azure log:

`Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling ASP.NET Core Web Application deployment.
  Restoring packages for D:\home\site\repository\Blogg.csproj...
D:\Program Files (x86)\dotnet\sdk\1.0.0-rc4-004771\NuGet.targets(97,5): warning : Dependency specified was Microsoft.AspNetCore.Server.IISIntegration (>= 1.1.0-preview4-final) but ended up with Microsoft.AspNetCore.Server.IISIntegration 1.1.0. [D:\home\site\repository\Blogg.csproj]
  Installing Microsoft.AspNetCore.Http.Features 1.1.0.
  Installing Microsoft.AspNetCore.Hosting.Server.Abstractions 1.1.0.
  Installing Microsoft.Extensions.Configuration.Abstractions 1.1.0.
  Installing Microsoft.AspNetCore.Http.Abstractions 1.1.0.
  Installing Microsoft.AspNetCore.WebUtilities 1.1.0.
  Installing Microsoft.Extensions.ObjectPool 1.1.0.
  Installing Microsoft.Net.Http.Headers 1.1.0.
  Installing Microsoft.AspNetCore.Http.Extensions 1.1.0.
  Installing Microsoft.AspNetCore.Hosting.Abstractions 1.1.0.
  Installing Microsoft.AspNetCore.Http 1.1.0.
  Installing Microsoft.Extensions.Logging.Abstractions 1.1.0.
  Installing Microsoft.Extensions.Options 1.1.0.
  Installing Microsoft.AspNetCore.HttpOverrides 1.1.0.
  Installing Microsoft.AspNetCore.Server.IISIntegration 1.1.0.
  Writing lock file to disk. Path: D:\home\site\repository\obj\project.assets.json
  Restore completed in 18.69 sec for D:\home\site\repository\Blogg.csproj.
  Restoring packages for D:\home\site\repository\Blogg.csproj...
  Restore completed in 14.38 sec for D:\home\site\repository\Blogg.csproj.
  Restoring packages for D:\home\site\repository\Blogg.csproj...
  Restore completed in 17.49 sec for D:\home\site\repository\Blogg.csproj.

  NuGet Config files used:
      D:\local\AppData\NuGet\NuGet.Config

  Feeds used:
      https://api.nuget.org/v3/index.json

  Installed:
      14 package(s) to D:\home\site\repository\Blogg.csproj
Microsoft (R) Build Engine version 15.1.545.13942
Copyright (C) Microsoft Corporation. All rights reserved.

  Blogg -> D:\home\site\repository\bin\Release\netcoreapp1.0\Blogg.dll
  No executable found matching command "dotnet-publish-iis"
D:\home\site\repository\Blogg.csproj(30,5): error MSB3073: The command "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" exited with code 1.
Failed exitCode=1, command=dotnet publish "D:\home\site\repository\Blogg.csproj" --output "D:\local\Temp\8d4ac97ca692979" --configuration Release
An error has occurred during web site deployment.
\r\nD:\Program Files (x86)\SiteExtensions\Kudu\62.60524.2862\bin\Scripts\starter.cmd "D:\home\site\deployments\tools\deploy.cmd"`

Solution

  • When using csproj files for ASP.NET Core web applications, you can safely remove this line:

    <Exec Command="dotnet publish-iis …" />
    

    For project.json based projects, this command performed actions that are now performed by default if your project uses the web sdk:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    

    It looks like the migration correctly removed the tools reference to the dotnet-publish-iis tool but did not remove the corresponding invocation. You could file an issue at the dotnet migrate tool's GitHub repository with your original project.json file.