我正在尝试在Ubuntu 16.04-x64上运行我的第一个.NET Core 2.0控制台应用程序。我按照发布Ubuntu应用程序的步骤进行操作:
dotnet publish -c release -r ubuntu.16.04-x64
我也尝试了从Visual Studio中进行尝试,方法是更改我的.csproj文件如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="sharpadbclient" Version="2.1.0" />
<PackageReference Include="System.IO.Ports" Version="4.4.0" />
</ItemGroup>
</Project>
然后使用发布配置文件将其发布。 我按照Microsoft的指导在Ubuntu上安装了.NET Core,将已发布的输出复制到运行Ubuntu的PC上,并尝试运行我的控制台应用程序的.dll文件时,出现了以下错误:
Unhandled Exception: System.IO.FileLoadException:
Could not load file or assembly
'System.Console, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)
at LinuxVersion.Program.InitializeComponent()
at LinuxVersion.Program.Main(String[] args)
Aborted (core dumped)
当我运行
dotnet restore
时,我收到一条消息,上面写着:MSBUILD : error MSB1003: Specify a project or solution file.
The current working directory does not contain a project or solution file.
我在这个过程中是不是漏掉了某一步骤?
./yourappname
运行已发布的应用程序还是dotnet yourappname.dll
?由于这是一个自包含的部署,很可能只有第一个选项可行 - 即使如此,你也应该使用linux-x64
代替ubuntu*
来运行 .NET Core 2.0。 - Martin Ullrichdotnet myappname.dll
,但我会尝试你建议的第一种方法。你认为这可能是导致这个特定错误的原因吗?另外,你所说的“使用linux-x64
而不是ubuntu *
”是什么意思?你是指在dotnet publish
命令中吗? - Liran Friedman