【发布时间】:2018-02-16 07:33:13
【问题描述】:
我了解以 .NET Standard 2 为目标意味着 .net core、mono 和完整 .net 框架之间的框架,但我想了解这对于不同框架创建的二进制文件意味着什么。
所以如果我创建一个面向 .NET Standard 2 的控制台程序并使用 .NET Framework 进行编译,是否只能使用完整的 .NET Framework 运行此文件?如果他们都可以运行文件,我将如何使用完整框架或 Mono 运行 .NET Core .dll 可执行控制台?
那么基本上每个框架(针对 .NET Standard)创建的二进制文件能够使用其他框架运行吗?
【问题讨论】:
-
您不能创建 .NET Standard 控制台程序。它仅适用于图书馆。可执行文件必须以运行时为目标。可执行文件是指控制台应用程序、网站和单元测试类库。这些可执行文件可以引用相同的 .NET Standard 库
-
@PanagiotisKanavos 哇,我什至从未考虑过 - 没有看到任何关于 classlib 和可执行文件之间差异的信息。到目前为止,我能看到的最接近的信息是 github.com/dotnet/corefx/issues/18217#issuecomment-293394403,其中一些答案很有趣,但很奇怪,在解释 .net 标准时并没有详细说明(我至少在任何地方都没有看到这个)
-
实际上,您可以创建一个 .NET Standard 控制台应用程序,但它不会运行,因为 .NET Standard 没有运行时。这意味着你必须挠头,直到你弄清楚你做错了什么。
-
@NightOwl888 问题是我发现能够将 exe 编译为 .net 标准是很合乎逻辑的,但必须使用运行时显式运行它,例如:
dotnet exec.dll但使用 . net 标准不会抱怨,但它不会运行。如果你问我会感到困惑。也表明它可能会在未来被允许或计划在某个阶段(我之前链接到的问题) -
@MladenMihajlovic - 不,这是不可能的。
dotnet应用程序在 .NET Core 上运行。它加载的程序集必须在 .NET Core 上可执行 - 它必须以 .NET Core 为目标(并且可以依赖于 .NET Standard DLL)。您还可以为具有.exe文件且不需要dotnet.exe运行的.NET Core 创建Self-contained deployment。
标签: .net .net-core .net-standard