[英]Source code in multiple targeting framework
我有一个包含 3 个项目( NetCoreWeb 、 NetFrameworkWeb 、 SharedLibrary )的解决方案
这是在SharedLibrary项目中的MessageService.cs 中的源代码:
public class MessageService
{
public string GetMessage()
{
#if NETFRAMEWORK
return "Net Framework";
#elif NETSTANDARD
return "Net Standard";
#else
return "Not supported";
#endif
}
}
每次,只有#elif NETSTANDARD 中的源代码处于活动状态并可用于调试,即使我将NetFrameworkWeb设置为活动项目:
当我将NetFrameworkWeb设置为活动项目时,如何使#if NETFRAMEWORK块中的源代码处于活动状态,并在#elif NETSTANDARD设置为活动时将其余部分设置为活动状态?
谢谢,
#if
* 语句是编译时定义。 由于您的库仅针对 .NET Standard(据我从屏幕截图和描述的行为中得知),源代码是使用NETSTANDARD
常量编译的。
然后在 .NET Core 和 .NET Framework 项目中使用生成的二进制文件,因此字符串值不会更改,因为它们是从不同的项目中使用的。
如果您绝对需要为不同的运行时实现不同的行为,则需要通过更改库的 csproj 文件,将库设置为多目标项目而不是 .NET Standard 项目
<TargetFramework>netstandard2.0</TargetFramework>
到
<TargetFrameworks>netcoreapp2.2;net452</TargetFrameworks>
(注意TargetFrameworks
的附加s
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.