[英]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.