[英]Why are .NET target framework defines not set?
“ 目标框架”文档页面引用了某些定义是根据项目的目标框架自动设置的,我假设会根据“ Properties > Application
的“ Target framework
字段进行更改:
或者在创建新的Visual C#项目时选择目标框架(“新建项目”>“ Visual C#”>“控制台应用程序(.NET Framework)”)
但是,据我测试,文档中指定的定义均未定义。
例如,如果我创建一个.NET Framework 3.5
项目,或者在属性中手动将现有项目设置为目标.NET Framework 3.5
,则未定义NET35
。
我已经采用了文档页面上列出的每个定义,并添加了调试代码,如果定义了任何一个或全部,则将进行打印,但似乎没有一个被定义: 源代码: https : //gist.github.com/JohannesMP/ece8987fa18b2eaf830d7426c2256d6b
我是否应该对何时以及如何设置这些定义做出错误的假设? 我还可以采用哪种其他可移植的方式在每行的基础上有条件地基于目标框架来编译代码?
我正在使用默认的Microsoft .NET Framework版本4.7.03056运行Visual Studio社区2017版本15.8.4
netstandard1.3
。只有当您使用新的SDK项目格式并使用多个目标框架(例如net45
和netstandard1.3
)时,此类预定义常量才有效。 它们的存在是为了帮助您执行条件编译,以支持多个框架。 我的博客文章显示了一个具体示例。
因此,您应该创建一个使用新格式的新项目,而不使用.NET Framework Console应用程序模板。
如果您从引用中删除,则在控制台中的应用程序将无法运行,但会与窗口应用程序一起运行:Microsoft.CSharp和System.Net.http
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.