Visual Studio Mac: вывод папки obj / bin в другом месте не поддерживается?

У меня есть решение для нескольких проектов, и я хочу поместить все сгенерированные в / obj артефакты в другую папку.

Я пытаюсь установить:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugType>portable</DebugType>
    <OutputPath>..\Bin\Core\Debug\</OutputPath>
    <IntermediateOutputPath>..\Bin\Core\obj\</IntermediateOutputPath>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>..\Bin\Core\Release\</OutputPath>
    <IntermediateOutputPath>..\Bin\Core\obj\</IntermediateOutputPath>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="Library.fs" />
  </ItemGroup>

</Project>

Тем не мение:

  1. Папка obj все еще создается заново в исходном месте. Также находится в желаемом месте, но ПУСТО.
  2. «Пакеты восстановления» запускают «1» и не помещают их в нужное место.
  3. При сборке проекта папка obj заполняется.

Это версии:

Visual Studio Community 2017 для Mac Версия 7.3.2 (сборка 12) Время выполнения: Mono 5.4.1.7 (2017-06 / e66d9abbb27) (64-разрядная версия)

Версия NuGet: 4.3.1.4445

.NET Core Runtime: / usr / local / share / dotnet / dotnet Версия программного обеспечения: 2.0.0 SDK: /usr/local/share/dotnet/sdk/2.0.0/Sdks Версия SDK: 2.0.0 SDK де MSBuild: /Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks


person mamcx    schedule 19.12.2017    source источник


Ответы (1)


Эта проблема не характерна для Visual Studio для Mac. То же самое происходит, если вы используете dotnet из командной строки.

В Visual Studio для Mac и интерфейсе командной строки dotnet каталог obj создается в каталоге проекта при восстановлении пакетов NuGet и содержит только файлы, созданные при восстановлении:

  • MyProject.csproj.nuget.cache
  • MyProject.csproj.nuget.g.targets
  • MyProject.csproj.nuget.g.props
  • project.assets.json

При создании файлы создаются в каталогах ../Bin/Core/Debug и ../Bin/Core/obj.

Вы можете получить желаемое поведение, установив BaseIntermediateOutputPath. Однако установка этого параметра в самом файле проекта может вызвать проблемы.

Самое простое решение - создать файл Directory.Build.props в каталоге решения и установить там свойство BaseIntermediateOutputPath.

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>..\Bin\Core\obj\</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

Затем сгенерированные файлы восстановления NuGet будут созданы в нужном вам каталоге.

Visual Studio для Mac, похоже, все еще хочет создать пустой каталог obj в проекте при открытии проекта, но после восстановления или сборки у него нет файлов.

person Matt Ward    schedule 20.12.2017
comment
Странно, но после установки двух проектов с этим он работает, но создает другую папку netstandard2.0 внутри \ Bin, также в \ Bin \ Core - person mamcx; 22.12.2017
comment
Ах! Это случилось, если в конце пути есть \. - person mamcx; 22.12.2017