无法在 .net 核心中发布二进制文件

Posted

技术标签:

【中文标题】无法在 .net 核心中发布二进制文件【英文标题】:Unable to publish binaries in .net core 【发布时间】:2016-07-05 14:10:37 【问题描述】:

我正在尝试自托管 .net core MVC 应用程序。它适用于所有 .cs 文件。当我通过命令窗口发布它(dotnet publish -f netcoreapp1.0 -c release)时,它显示以下错误:

找不到与“bower”匹配的可执行文件

我什至尝试使用 VS 发布。它生成二进制文件。但是当我在命令提示符下执行dotnet run 时,我会收到以下错误消息:

项目文件不存在'project.json'

谁能建议如何使用二进制文件进行自我托管?

【问题讨论】:

你如何解决 'dotnet run' 的问题? 【参考方案1】:

从命令行运行dotnet publish 命令时,您必须确保您的路径变量包含所有相关位置。

如果您在 Visual Studio 中执行发布命令,并查看“构建”窗口中的输出,您会注意到它会在运行发布命令之前更新路径变量:

在命令行中,您可以通过 SET Path=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Web\External;be 之类的操作来完成此操作

在 PowerShell 中您可以将其设置为

$env:path += ";C:\Program Files (x86)\Microsoft Visual Studio 14.0\Web\External;"

您还可以查看这个 GitHub 问题: No executable found matching command "bower"

至于你的dotnet run问题,你必须在包含project.json文件的同一目录中执行这个命令,或者使用-p|--project选项来指定项目文件的位置。在命令行中输入 dotnet run --help 以获取更多信息。

【讨论】:

它正在将二进制文件发布到“bin\Debug\netcoreapp1.0\win10-x64\publish”文件夹。当我看到这个位置时,我看不到“Project.json”文件。即使我将“project.json”文件复制到上述位置并在命令行中运行“dotnet run”。但它给出“系统找不到指定的文件”。 当你运行 dotnet publish 时,你会得到二进制文件(正如你所提到的)。 Project.json 在这种情况下不是必需的,因为您可以运行生成的 exe。【参考方案2】:

我在 Ubuntu 机器上遇到了这个问题,这就是解决方法:

npm install -g bower
npm install -g gulp

我在这里找到了解决方法:https://github.com/dotnet/cli/issues/3293#issuecomment-222993063

【讨论】:

以上是关于无法在 .net 核心中发布二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

无法理解核心文件分析的 GDB x 命令输出

分析没有核心文件的分段错误

VB.NET 怎么读写二进制文件,类似Open

在 iPhone 上的核心数据中存储二进制数据

将核心数据文件从二进制转换为 XML

核心转储文件分析[重复]