我有一个针对.NET标准2.0的Base.dll
此Base.dll在其他2个项目中引用:Framework.exe和Standard.exe
Framework.exe是一个.NET Framework 4.6.1项目
Standard.exe是一个.NET Core 2.0项目。
我的问题是:如何在Base.dll中编写仅在Base.dll加载到Standard.exe中而不是在Framework.exe加载时执行的代码。
This link提供有关基于目标框架的条件编译的详细信息,但Base.dll的目标框架始终为netstandard 2.0。我只想在运行时确定托管过程的目标框架是什么。
IMO的正确方法是通过多目标在[c0]等的csproj级别进行的,并且[c0](在C#中)或条件文件都包括在内(同样在csproj中)。最终,您要描述的是[[精确地多目标设计的目的,而“仅使用多目标”以外的任何解决方案都缺少解决这些问题的重要功能[[明确地针对]]问题。构建机制具有一个“诱饵和切换”层,其作用是询问“主机应用程序的目标框架是什么?好吧,我将给他们{这个版本}的依赖项” –这就是为什么传递依赖项解析被推迟到顶级应用程序构建,而不是库构建(出于我将要到达的原因,库不能可靠地知道主机TFM)。但是,放在一边:
什么是托管过程的目标框架。
它将是.NET标准。如果那只是一个错字,而您的意思是.NET Core,那么您可能[[合理地安全从从不
<TargetFrameworks>
借用了这两行:#if