Не выполняются строчки System.Diagnostics.Debug.WriteLine()

Каждый раз, когда начинаю новый проект, всегда забываю добавить режим 64-битной сборки. Для C++ этот режим вижуалка создаёт сама (он там даже по-умолчанию активирован), а для C# - нет. Уже 2024 год, а всё ещё нет. Почему нет - вопрос к индусам :man_with_turban:
Короче, вспомнил я, что его надо добавить. Добавил, закоммитил, пишу код дальше. И тут обнаруживаю, что строчки типа System.Diagnostics.Debug.WriteLine("fuck"); не выполняются. В режиме Any CPU, который создаётся вместе с проектом, - работает. А в x64, который добавил я, - нет. Дебаггер их просто перешагивает, как будто их тупо нет.
Где я какую галочку опять не поставил, или что это за прикол?
В файле проекта прописалось это:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Debug\</OutputPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Release\</OutputPath>
  </PropertyGroup>

А для Any CPU там по-более написано. Может в этом проблема?

Да, дело в том, что там больше написано.

	<PropertyGroup>
	    <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
	</PropertyGroup>
	<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
	  <Optimize>true</Optimize>
	  <DebugType>pdbonly</DebugType>
	</PropertyGroup>
	<PropertyGroup Condition=" '$(Configuration)' == 'Debug'">
	  <Optimize>false</Optimize>
	  <DebugType>full</DebugType>
	  <DebugSymbols>true</DebugSymbols>
	  <DefineConstants>DEBUG;$(DefineConstants)</DefineConstants>
	</PropertyGroup>

«вызовы Debug.WriteLine() будут исключены из кода во время компиляции, если не определен символ DEBUG

Так для C# там по умолчанию их особый режим Any CPU, а не x86.

Если нужен только х64, то логичнее тогда просто поменять его, а не создавать новую конфигурацию.

Бывают такие случаи, когда dll-ки на C# взаимодействуют с нативными на Си, и таки надо указать 64-битность для .Net. Но это неточно.

«Important
This API is not CLS-compliant.»

А зачем? AnyCPU действительно хороший вариант.

Разве это не одно и то же? :thinking: Я вчера гуглил, но толком не вникал.

:thinking:
Но диспетчером задач такой exeшник определяется как 32-битный. А значит, он запускается через эмуляцию. Как там этот эмулятор называется? wow32? А если программа по факту 32-битная (не зря же в диспетчере написано 32 бита), то и 4+ GB RAM она использовать не сможет. Разве не так? :thinking:

exe`шник определяется как 32-битный

Это интересное наблюдение. Я-то в основном .dll-ки компилирую и под linux, и об экзешниках я не подумал.

Я из другого проекта (WinForms) скопипастил конфиг:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DebugSymbols>true</DebugSymbols>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <OutputPath>bin\x64\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>

И заработало. Не знаю, все ли нужные параметры присутствуют и есть ли лишние для WPF :man_shrugging: