C# Директивы препроцессора в интерполированном дословном строковом литерале - PullRequest
0 голосов
/ 20 января 2020

У меня проблема во время сборки. Игровой движок Unity имеет зависимую от платформы компиляцию. #if UNITY_EDITOR ... #endif.

Во время сборки допустима следующая строка, и все работает нормально.

string format = $@"/* Created by ... */

using ...;

using ...;

#if UNITY_EDITOR
using UnityEditor;

public partial class ...
{{{{
    /// <summary>
    /// 
    /// </summary>
    private static readonly Texture2D s_scriptIcon = (EditorGUIUtility.IconContent(""cs Script Icon"").image as Texture2D);{{0}}
}}}}
#endif
";

Но этот следующий экземпляр - нет. И это исключение - "error CS1025: Single-line comment or end-of-line expected". Это оставило меня с выводом, что, хотя #if, #endif в строке, они все еще рассматриваются компилятором как Preprocessor Directives. Есть ли способ предотвратить такое поведение и убедиться, что они являются строками и заставить компилятор их игнорировать?

string format = $@"/* Created by ... */

using ...;

using ...;

#if UNITY_EDITOR
using UnityEditor;

public partial class ...
{{{{
    /// <summary>
    /// 
    /// </summary>
    private static readonly Texture2D s_scriptIcon = (EditorGUIUtility.IconContent(""cs Script Icon"").image as Texture2D);{{0}}
}}}}
#endif"; // Notice this line. This is where the error happens as well.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...