Могут ли быть добавлены условные символы компиляции в файл csproj.user?

Я работаю в VS 2013 с проектом С# Xamarin iOS. Я хотел бы добавить символ условной компиляции, не затрагивая кого-либо, или не должен войти в Configuration Manager и сказать, что копирование Debug (в первую очередь так, что если кто-то изменяет Debug, я не пропущу это изменение).

Я прочитал несколько сообщений о попытке добавить что-то вроде этого в файл csproj.user...

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>$(DefineConstants);__MY_NEW_SYMBOL__</DefineConstants>
</PropertyGroup>

... но это просто удаляет все остальные символы для проекта.

Есть ли способ изменить файл csproj.user для достижения этого?

Ответ 1

Я вижу, это действительно старый вопрос. Я не уверен, что кто-то на самом деле использует VS 2013, но он работает в VS2017, именно так, как это было в вопросе.

Но! Я должен был запустить Build → Clean Solution, прежде чем он заработал. "Rebuild Solution" даже не делал этого. Я должен был сначала очистить, а затем собрать и запустить его.

Я проверил это с помощью этого кода:

#if DEBUG
    Console.WriteLine("DEBUG");;
#endif
#if TRACE
    Console.WriteLine("TRACE");
#endif
#if __MY_NEW_SYMBOL__
    Console.WriteLine("__MY_NEW_SYMBOL__");
#endif

Несмотря на то, что мой файл .user определяет только __MY_NEW_SYMBOL__, после запуска я увидел все три в консоли.

Мой файл .csproj имеет это:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>

И мой файл .csproj.user имеет это:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>$(DefineConstants);__MY_NEW_SYMBOL__</DefineConstants>
</PropertyGroup>