基于托管项目的Targetframework在C#中执行条件代码

问题描述 投票:0回答:1

我有一个针对.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。我只想在运行时确定托管过程的目标框架是什么。

c# .net .net-standard-2.0
1个回答
0
投票

IMO的正确方法是通过多目标在[c0]等的csproj级别进行的,并且[c0](在C#中)或条件文件都包括在内(同样在csproj中)。最终,您要描述的是[[精确地多目标设计的目的,而“仅使用多目标”以外的任何解决方案都缺少解决这些问题的重要功能[[明确地针对]]问题。构建机制具有一个“诱饵和切换”层,其作用是询问“主机应用程序的目标框架是什么?好吧,我将给他们{这个版本}的依赖项” –这就是为什么传递依赖项解析被推迟到顶级应用程序构建,而不是库构建(出于我将要到达的原因,库不能可靠地知道主机TFM)。但是,放在一边:


您最大的问题是:.NET Standard在运行时不存在,仅在编译时存在;我的意思是多方面的,包括现实中.NET Framework可以承载.NET Standard,所以当您问:

什么是托管过程的目标框架。

它将

从不

是.NET标准。如果那只是一个错字,而您的意思是.NET Core,那么您可能[[合理地安全从<TargetFrameworks>借用了这两行:

#if

干净吗?没有。它会工作:是的。
© www.soinside.com 2019 - 2024. All rights reserved.