gpt4 book ai didi

c# - 在 Debian 上运行 .net core 时出错

转载 作者:IT王子 更新时间:2023-10-29 00:32:56 25 4
gpt4 key购买 nike

我正在尝试使用 .net 核心编译和运行我的第一个跨平台应用程序以迁移 c# 应用程序。我正在尝试在 Debian stretch 9.3 上运行它

我已经运行了这两个命令。

dotnet build -r debian-x64
dotnet publish -c release -r debian-x64

dotnet build -r linux-x64
dotnet publish -c release -r linux-x64

我得到了其中每一个的文件夹(分别为 bin\Release\netcoreapp2.0\linux-x64 和 bin\Release\netcoreapp2.0\debian-x64),我使用 SFTP 将其复制到我的 linux 机器中。在 linux 中,我进入文件夹并运行 .\program

我在尝试使用 debian 特定或通用 linux 编译代码时遇到以下错误。

Error:
An assembly specified in the application dependencies manifest (nfz_core.deps.json) was not found:
package: 'runtime.linux-x64.Microsoft.NETCore.App', version: '2.0.0'
path: 'runtimes/linux-x64/lib/netcoreapp2.0/Microsoft.CSharp.dll'

我想我可能在我的 csproj 文件中做错了什么,但我似乎无法弄清楚我做错了什么。

这是我的 .csproj 文件

  <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>win10-x64;debian-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>

</Project>

我感谢人们提供的任何见解。

最佳答案

当你运行时:

dotnet publish -c release -r linux-x64

您要求将此代码发布为 Self Contained Deployment .这意味着所有 .NET Core 运行时、所有依赖项以及基本上与操作系统无关的所有内容都与您的应用程序一起发布。发布命令将您的构建置于:

bin\Release\netcoreapp2.0\linux-x64\publish

注意:这bin\Release\netcoreapp2.0\linux-x64\ 相同。 linux-x64 目录包含 dotnet build 的输出,而不是 dotnet publish

一旦复制了 publish 目录,您就可以直接在目标操作系统上运行您的程序 (./program),无需安装 .NET Core。

另一种方法是在 Framework Dependent Deployment 中运行模式。在这种情况下,您无需构建 -r linux-x64。在这种情况下,您仍然复制 publish 目录,但您必须将应用程序作为 dotnet/path/to/your.dll 运行。

TLDR:部署时始终复制 publish 目录。

关于c# - 在 Debian 上运行 .net core 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49179801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com