无法使用 VS Code 在 Windows 机器上为 linux 构建 .Net core 3.0 项目

Posted

技术标签:

【中文标题】无法使用 VS Code 在 Windows 机器上为 linux 构建 .Net core 3.0 项目【英文标题】:Unable to build .Net core 3.0 project for linux on windows machine using VS Code 【发布时间】:2020-12-11 16:11:53 【问题描述】:

我有 Windows 7 64 位机器。以下是dotnet --info的输出

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.1.7601
 OS Platform: Windows
 RID:         win7-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100\

Host (useful for support):
  Version: 3.0.0
  Commit:  7d57652f33

.NET Core SDKs installed:
  3.0.100 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNe
tCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.
App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.W
indowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

以下是我的 csproj 文件

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <RuntimeIdentifiers>linux-x64</RuntimeIdentifiers>
  </PropertyGroup>
</Project>

当我尝试运行 dotnet build -r linux-x64 时,出现以下错误

Microsoft (R) Build Engine version 16.3.0+0f4c62fea for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

error NU1100: Unable to resolve 'Microsoft.NETCore.App.Runtime.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
error NU1100: Unable to resolve 'Microsoft.AspNetCore.App.Runtime.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
error NU1100: Unable to resolve 'Microsoft.NETCore.App.Host.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
  Restore failed in 117.05 ms for C:\Users\viraj\Documents\Projects\MS\SampleWebApi\SampleWebApi.csproj.

Build FAILED.

error NU1100: Unable to resolve 'Microsoft.NETCore.App.Runtime.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
error NU1100: Unable to resolve 'Microsoft.AspNetCore.App.Runtime.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
error NU1100: Unable to resolve 'Microsoft.NETCore.App.Host.linux-x64 (= 3.0.0)' for '.NETCoreApp,Version=v3.0'.
    0 Warning(s)
    3 Error(s)

Time Elapsed 00:00:00.76

我想我错过了在我的 Windows 机器上安装运行时。但我不确定如何在我的 Windows 机器上为 linux 添加运行时。我找不到任何文件。 我最终想将它部署在 linux 机器上。

【问题讨论】:

在您尝试使用 docker 容器之前,不确定您是否能够在 Windows 操作系统上使用 linux-x64 构建 dotnet。我认为您可以使用dotnet build 成功构建而不使用-r 开关。 RuntimeIdentifier 仅在您需要将应用程序作为自包含包发布时才有用。 docs.microsoft.com/en-us/dotnet/core/tools/csproj#additions 初步检查,查看NuGet 错误,是否在 NuGet 配置下添加了适当的包源? @SaiGummaluri 你是对的。我正在使用 VS 代码。它不会自动添加 nuget org 包源。添加后它开始工作。 @MohsinMehmood 我想发布一个独立的包。 @VirajPangam,很高兴它帮助解决了这个问题! :) 【参考方案1】:

我认为那是因为您没有使用 Windows 路径

【讨论】:

【参考方案2】:

问题是因为 VS 代码不会自动从 nuget.org 中提取。

创建一个 Nuget.config 文件并添加 nuget.org 包源修复它。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

【讨论】:

以上是关于无法使用 VS Code 在 Windows 机器上为 linux 构建 .Net core 3.0 项目的主要内容,如果未能解决你的问题,请参考以下文章

windows中vs code无法yarn install

使用Windows7上的VS Code打开远程机Ubuntu上的文件操作步骤

VS code 使用 Remote-SSH 进行python远程开发

VS code 使用 Remote-SSH 进行python远程开发

VS code 使用 Remote-SSH 进行python远程开发

Git Bash 构建在 VS Code 中无法从终端运行