【问题标题】:Error in building default .NET Core console application targeting the full .NET framework 4.6.2构建针对完整 .NET 框架 4.6.2 的默认 .NET Core 控制台应用程序时出错
【发布时间】:2017-07-26 16:38:33
【问题描述】:

我一直在尝试使用 .NET Core CLI 工具学习 .NET Core 编程的基础知识。我下载了 .NET Core SDK for Windows 1.0.1 版,并按照下载页面 (https://www.microsoft.com/net/core#windows) 上的简单说明进行操作:

mkdir hwapp
cd hwapp
dotnet new
dotnet restore
dotnet run

这在我的 Windows 10 x64 机器上编译并运行良好。

当我尝试在同一个应用程序中定位 .NET Framework 4.6.2 时遇到了麻烦。根据我的阅读,我应该只需要在“框架”节点下添加一个值为“net462”的节点:

{
  "net462": {}
}

然而,在添加此节点后,运行 dotnet restore 然后运行 ​​dotnet build CLI 命令,我收到以下错误:

Project hwapp (.NETFramework,Version=v4.6.2) will be compiled because expected outputs are missing
Compiling hwapp for .NETFramework,Version=v4.6.2
C:\Program Files\dotnet\dotnet.exe compile-csc @C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.rsp returned Exit Code 1
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(2,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(3,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(4,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(5,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(2,58): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(3,54): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(4,67): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(5,62): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Development\dotNet\hwapp\Program.cs(1,7): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Development\dotNet\hwapp\Program.cs(5,18): error CS0518: Predefined type 'System.Object' is not defined or imported
C:\Development\dotNet\hwapp\Program.cs(7,33): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Development\dotNet\hwapp\Program.cs(7,23): error CS0518: Predefined type 'System.Void' is not defined or imported

Compilation failed.
    0 Warning(s)
    12 Error(s)

从输出中可以看出,当面向 .NET Framework 4.6.2 时,编译器似乎无法找到 System 命名空间。当我尝试针对早期的 .NET 框架(如 4.6.1 和 4.5.2)时,也会出现同样的错误。

我尝试将 x64 版本的 System.dll 和 mscorlib.dll 的副本从 GAC 移动到 C:\Program Files\dotnet\ 目录,以便 csc.exe 程序无法成功找到 System 命名空间.

如果有帮助,请在下面找到我的 project.json 文件的内容:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "net462": {},
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

任何帮助将不胜感激!

【问题讨论】:

标签: .net .net-core .net-framework-version


【解决方案1】:

如果你想针对.Net 4.6.2,你需要安装.NET Framework 4.6.2 Developer Pack

【讨论】:

  • 这个答案完全按照规定工作。不过,为了进一步推动这个问题......您能否指出任何文献的方向,详细说明为什么需要安装开发人员包才能使 .NET Core 应用程序正确定位 .NET Framework 4.6.2?我已经在我的机器上安装了这个 .NET 版本。为了使 C:\Program Files\dotnet\dotnet.exe compile-csc 可以与 .NET Framework 4.6.2 一起使用,安装开发包做了什么?
  • 不确定这是否记录在某处,但通常安装 .Net Framework 版本只会为您提供运行时程序集(用于运行应用程序)。各种 Developer/Targetting 包为您提供参考程序集(用于编译代码)。
  • 这是有道理的。由于我试图在没有 Visual Studio 的新机器上进行开发,因此我最初的努力因使用 Visual Studio 所带来的错误期望而被遗弃,Visual Studio 提供了针对不同版本的 .NET Framework 编译代码的库。
  • 考虑到 4.6.2 是 .NET Standard 1.5 的必需/预期框架,​​在 VS2017 w/“.NET 桌面开发”角色中默认未安装这令人惊讶/沮丧: docs.microsoft.com/en-us/dotnet/standard/…
猜你喜欢
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多