构建默认的 .NET Core 控制台应用程序,目标为完整的 .NET Framework 4.6.2 时出现错误。

3

我一直在尝试使用.NET Core CLI工具学习.NET Core编程的基础知识。我下载了Windows版本1.0.1的.NET Core SDK,并按照下载页面(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时,遇到了问题。从我所读的资料来看,我只需要在“frameworks”节点下添加一个值为"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命名空间。尝试将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"
    }
  }
}

任何帮助都将不胜感激!

你的project.json在我这里运行良好。你是否安装了.NET Framework 4.6.2开发人员包?(http://getdotnet.azurewebsites.net/target-dotnet-platforms.html) - svick
安装.NET Framework 4.6.2开发人员包解决了这个问题!感谢@svick! - PennTx
1个回答

2

这个答案完全按照预期工作。再深入一点,你能否指出任何文献,详细说明为什么需要安装开发人员包才能使.NET Core应用程序正确地针对.NET Framework 4.6.2进行定位?我已经在我的计算机上安装了这个.NET版本。安装开发人员包做了什么,以便 C:\ Program Files \ dotnet \ dotnet.exe compile-csc 可以使用.NET Framework 4.6.2? - PennTx
不确定这是否有记录,但通常安装 .Net Framework 的版本只会提供运行时程序集(用于运行应用程序)。各种开发人员/目标套件会提供 参考程序集(用于编译代码)。 - svick
这很有道理。由于我正在尝试在没有Visual Studio的新机器上开发,我的最初努力由于使用Visual Studio带来的错误期望而不尽如人意,因为它提供了针对不同版本的.NET Framework编译代码所需的库。 - PennTx
2
惊讶/沮丧的是,在安装了“ .NET桌面开发”角色的VS2017中,默认情况下没有安装它,考虑到4.6.2是.NET Standard 1.5所需/预期的框架:https://learn.microsoft.com/en-us/dotnet/standard/library#net-platforms-support - Mike-E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接