.NET核心控制台应用程序无法在Windows Server [复制]上运行

问题描述 投票:4回答:1

这个问题已经在这里有一个答案:

我有一个相对简单的.NET核心控制台应用程序。它没有外部依赖。我建立使用下面的吧:

dotnet publish -c Release -r win10-x64

它产生一个\bin\Release\netcoreapp2.2\win10-x64文件夹结构。此文件夹包含大量的文件和文件夹发布:

enter image description here

我这整个结构复制到Windows Server 2016根据命令服务器已经安装了以下运行时的dotnet --list-runtimes

Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

然而,当我运行.exe文件(netcoreapp2.2\win10-x64\LayoutAutomation.exe),我收到以下错误:

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

如果我尝试运行从publish文件夹中的exe(这貌似有整个.NET核心安装),它运行良好。

因此,如何能我不能运行从netcoreapp2.2\win10-x64文件夹中的exe文件?在.NET核心安装在盒子 - 它应该运行。

c# .net windows .net-core windows-server-2016
1个回答
5
投票

发布命令是罕见的情况下,微软的工具做什么他们要求做的,即,发布应用程序到指定的位置之一。

的bin /释放下的文件汇编器物与本地依赖性。您的服务器无法找到的依赖,因为这些文件是为了在您的开发机器上执行。这些依赖关系可以位于不同的地方,而编译器整合它们释放的文件夹。

根据发布的文件是专门为部署,并根据您的发布设置,可以是自包含的(默认)或框架依赖。您应该发布文件夹的内容(或整个文件夹)复制到您的最终部署路径。如果你想发布您的应用程序框架的依赖,然后修改您发布命令,如下所示:

dotnet publish -c Release -r win10-x64 --self-contained false

您还可以添加-o标志来指定一个部署路径。

© www.soinside.com 2019 - 2024. All rights reserved.