发布 .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 错误