Dotnet Publish因NuGet(CommandLineTools)

时间:2017-06-08 10:41:14

标签: iis asp.net-core nuget publishing project.json

我正在寻找大约3天,但我找不到解决问题的方法。我们有一个Web应用程序,应该发布到IIS。对于这种情况,我们有一个批处理文件,它运行带有Powershell.exe的ps1文件,该文件运行dotnet publish。

当我运行此发布脚本并运行“ dotnet publish ”时,我得到以下输出:

Output on "dotnet publish"

Publishing WebAuthServer for .NETFramework,Version=v4.6.1/win7-x64
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Extensions.CommandLineUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Das System kann die angegebene Datei nicht finden.
   at Microsoft.AspNetCore.Server.IISIntegration.Tools.Program.Main(String[] args)

project.json 如下所示:

  "dependencies": {
    "IdentityServer4": "1.0.0-beta5",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net461": {
      "imports": [ "dnx451" ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "languageVersion": "csharp6"
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "config.json",
      "config.default.json",
      "config-schema.json",
      "web.config",
      "WebAuthServerSigning.pfx"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }

当我删除我们的全局nuget包文件夹并使用“ dotnet restore ”恢复nuget包时,它会将IISIntegration-Tools放入.tools文件夹。

当我尝试IIS集成工具的“1.0.0-preview1-final”时,发布没有错误,但结果在浏览器中出现了502错误。

我还尝试删除 project.lock.json

我还尝试将 Microsoft.Extensions.CommandLineUtils 放入依赖项部分。

project.lock.json 使用工具部分的以下信息恢复自身:

  "tools": {
    ".NETCoreApp,Version=v1.0": {
      "Microsoft.AspNetCore.Server.IISIntegration.Tools/1.0.0-preview2-final": {
        "type": "package",
        "dependencies": {
          "Microsoft.DotNet.ProjectModel": "1.0.0-rc3-003121",
          "Microsoft.Extensions.CommandLineUtils": "1.0.0",
          "Microsoft.NETCore.App": "1.0.0",
          "System.Diagnostics.Process": "4.1.0"
        },
        "compile": {
          "lib/netcoreapp1.0/dotnet-publish-iis.dll": {}
        },
        "runtime": {
          "lib/netcoreapp1.0/dotnet-publish-iis.dll": {}
        }
      }
    }
  },
  "projectFileToolGroups": {
    ".NETCoreApp,Version=v1.0": [
      "Microsoft.AspNetCore.Server.IISIntegration.Tools >= 1.0.0-preview2-final"
    ]
  }

脚本中用于构建和发布的行是:

. dotnet build $projectPath --configuration Release --no-dependencies
. dotnet publish $projectPath --framework net461 --output $tempPath --configuration Release --no-build

我真的不知道,为什么 CommandLineUtils 似乎在这里丢失。

你知道这里有什么不对吗?

非常感谢你!

修改

我们在git存储库中有一个nuget依赖项的工作副本。但我不知道,为什么大约一年前编译的不同。当我编译项目时,我在nuget文件夹的.tools文件夹中得到一个 Microsoft.AspNetCore.Server.IISIntegration.Tools.deps.json 。当我将旧版本与新版本进行比较时,在工作版本中有时会是运行时部分,而不是新版本。

这里有一个例子。旧的,工作 Microsoft.AspNetCore.Server.IISIntegration.Tools.deps.json 文件:

  "Microsoft.AspNetCore.Server.IISIntegration.Tools/1.0.0-preview2-final": {
    "dependencies": {
      "Microsoft.DotNet.ProjectModel": "1.0.0-rc3-003121",
      "Microsoft.Extensions.CommandLineUtils": "1.0.0",
      "Microsoft.NETCore.App": "1.0.0",
      "System.Diagnostics.Process": "4.1.0"
    },
    "runtime": {
      "lib/netcoreapp1.0/dotnet-publish-iis.dll": {}
    }
  },

这是没有运行时部分的非工作文件:

  "Microsoft.AspNetCore.Server.IISIntegration.Tools/1.0.0-preview2-final": {
    "dependencies": {
      "Microsoft.DotNet.ProjectModel": "1.0.0-rc3-003121",
      "Microsoft.Extensions.CommandLineUtils": "1.0.0",
      "Microsoft.NETCore.App": "1.0.0",
      "System.Diagnostics.Process": "4.1.0"
    }
  },

您是否对此信息有任何想法?

0 个答案:

没有答案