我理解针对.NET Standard 2意味着.net core,mono和完整.net框架之间的框架,但我想了解这对不同框架创建的二进制文件意味着什么。
因此,如果我创建一个针对.NET Standard 2的控制台程序并使用.NET Framework进行编译,那么只有完整的.NET Framework才能运行此文件吗?如果他们都可以运行文件,我将如何使用完整框架或Mono运行.NET Core .dll
可执行控制台?
所以基本上每个框架(针对.NET标准)创建的二进制文件能够使用其他框架运行吗?
答案 0 :(得分:7)
我相信__callStatic
部分可能说得最好:
.NET Standard是Comparison to Portable Class Libraries的替代品。
.NET Standard本身不是运行时,它是多个不同运行时的类型转发机制。因此,除了PCL的情况之外,不可能在.NET Standard中创建除不可执行类库之外的任何内容。
这使得类库可以由针对特定运行时(.NET Framework,.NET Core,Xamarin.iOS,Mono等)的可执行程序集使用。
在类和接口方面考虑这一点很有帮助。在伪代码中,.NET Standard是.NET Framework和.NET Core实现的接口。
public interface INetStandard
{
// Only has API definitions
}
public class NetFramework : INetStandard
{
// .NET Framework Runtime implemented here
}
public class NetCore : INetStandard
{
// .NET Core Runtime implemented here
}
这使得.NET Standard可以与.NET Framework或.NET Core一起使用,但.NET Standard本身没有运行时,只有一组可以在运行时之间共享的API。您可以将三个项目中的任何一个作为项目的目标,但除了可以实例化接口之外,您无法执行.NET Standard。
不幸的是,你并不是第一个提出这个问题的人,除非微软更清楚地说明.NET Standard没有真正执行,否则你可能不会成为最后一个。