Задать пользовательский <OutputPath> в .NET Core (прекратить добавлять цель фреймворка)?

В традиционных приложениях .NET можно было установить пользовательский <OutputPath> сборки в файле .csproj (или через диалог свойств проекта). Путь, например, bin\$(Configuration)\$(Platform) привел к bin\Debug\AnyCPU.

У меня была привычка устанавливать эти значения независимо от текущей конфигурации сборки (в собственной ItemGroup, вместе с DocumentationFile и т.д.).

Когда я настраиваю свою конфигурацию в новом ядре .NET .csproj следующим образом...

<OutputPath>bin\$(Configuration)\$(Platform)</OutputPath>
<DocumentationFile>$(OutputPath)$(AssemblyName).xml</DocumentationFile>

... создается следующая структура папок:

bin\
  Debug\
    AnyCPU\
      MyAssembly.xml
      netstandard1.0\
        MyAssembly.exe

Таким образом, кажется, msbuild, или что-то автоматически добавляет TargetFramework, что довольно раздражает.

Есть ли способ действительно настроить выходной путь или отключить это поведение?

Ответ 1

Вы можете отключить это поведение, установив:

<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>

Это поведение происходит от Microsoft.NET.Sdk (см. его источник)