发布 .NET Core 应用程序时出现错误“找不到路径的一部分”

Posted

技术标签:

【中文标题】发布 .NET Core 应用程序时出现错误“找不到路径的一部分”【英文标题】:Error "Could not find a part of the path" while publishing .NET Core Application 【发布时间】: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"
  

【问题讨论】:

【参考方案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

以上是关于发布 .NET Core 应用程序时出现错误“找不到路径的一部分”的主要内容,如果未能解决你的问题,请参考以下文章

将 asp.net core web api 部署到 aws elastic beanstalk 时出现错误 404

为啥在 C# .Net Core 3 中连接到 MySql 时出现错误

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

使用存储过程时出现 ASP.Net Core 3.1 MVC 错误

ASP.NET Core 依赖注入错误:尝试激活时无法解析服务类型 - 调用视图组件时出现错误 [重复]

将 asp.net core web api 部署到 IIS 7.5 时出现 500 错误