Dotnet Core 1.1 Azure部署:找不到匹配命令“dotnet-publish-iis”

时间:2017-06-06 05:02:18

标签: azure iis deployment .net-core microsoft-web-deploy

我遇到了通过git部署到Azure的问题。在应用程序发布到服务器后运行Blogg命令时,我的应用程序PostCompile会一直挂起。该命令是:

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

我认为此命令的软件包参考来自Microsoft.AspNetCore.Server.IISIntegration,但即使在添加版本1.1.0-preview4-final1.1.2(最新版本)之后,我仍然遇到了麻烦。

如果它有用,下面是我的.csproj文件中的内容:

`<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>`

我从Azure日志中得到的错误:

`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"`

1 个答案:

答案 0 :(得分:3)

对ASP.NET Core Web应用程序使用csproj文件时,可以安全地删除此行:

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

对于基于project.json的项目,如果您的项目使用web sdk,则此命令执行现在默认执行的操作:

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

看起来迁移正确地删除了对dotnet-publish-iis工具的工具引用,但没有删除相应的调用。您可以使用原始project.json文件在dotnet migrate tool's GitHub repository处提交问题。