【问题标题】:Error "Could not find a part of the path" while publishing .NET Core Application发布 .NET Core 应用程序时出现错误“找不到路径的一部分”
【发布时间】:2016-08-18 16:26:43
【问题描述】:

我有一个使用 Visual Studio 2015 Update 3 创建的非常简单的 .NET Core Web 应用程序 (.NET Framework),它构建时没有错误。

我可以使用 x64 配置文件在文件系统上发布。但是,当尝试使用目标运行时“win7-x86”发布时,会出现以下错误:

找不到路径 'c:\Users\Developer\Documents\Visual 的一部分 工作室 2015\Projects\SelfHostTest\src\SelfHostTest\bin\Release\net452\win7-x86\SelfHostTest.exe'

我使用的是 Windows 8.1 x64 机器。我转到“配置管理器”并将“平台”从“任何 CPU”更改为“x86”,但没有工作。

我注意到有一个文件夹“src\SelfHost2\bin\Debug\net452\win7-x64”,但我没有为 x86 创建结构。

此发布有效:

此发布不起作用:

这是我的 project.json 以帮助别人帮助我。

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.Server.WebListener": "0.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },

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

  "frameworks": {
    "net452": {
      "dependencies": {
      }
    }
  },

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

  "runtimes": {
    "win7-x64": {},
    "win7-x86": {}
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  },

  "commands": {
    "http": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
  }
}

【问题讨论】:

    标签: asp.net-mvc visual-studio-2015 asp.net-mvc-5 asp.net-core publish


    【解决方案1】:

    这是工具中的一个错误。它将始终为默认 RID 构建(并且 AFAIK 无法更改它),但随后在发布对话框中您会看到 project.json 中的所有 RID,如果您选择非默认的一个发布将失败,因为该项目不是为此 RID 构建的。尝试使用您要发布的 RID 从命令行构建。这样,当您发布时,VS 将能够找到二进制文件并且发布应该可以工作。

    【讨论】:

    • 好的。我在开发机器的控制台上写了“dotnet publish --configuration Release --runtime win7-x86”。它创建了一个文件夹“Release\net452\win7-x86”。我将内容复制到我的windows7。我运行了 exe,我得到了抱怨 x86/x64 的错误
    • 在为 x86 构建时,尝试将 "platform": "x86" 添加到 project.json 中的 buildOptions
    • 成功了!但是让我问一下:当发布到 x64 时,真的会是 x64 吗?
    • 根据github.com/dotnet/cli/blob/… - 默认情况下,传递给编译器的/platform 将是x64。设置为 x86 会导致通过 anycpu32bitpreferred。更多细节在这里:msdn.microsoft.com/en-us/library/zekwfyz4.aspx
    猜你喜欢
    • 2022-12-05
    • 2017-09-10
    • 2020-06-09
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多