Visual Studio Mac:在其他地方输出obj / bin文件夹不受支持?

时间:2017-12-19 22:39:41

标签: macos build visual-studio-mac

我有一个多项目解决方案,并希望将所有生成的/ 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文件夹。是 也在理想的位置,但EMPTY。
  2. “恢复包”触发“1”而不是将它们放在所需的位置
  3. 构建项目时,将填充obj文件夹。
  4. 这是版本:

      

    Visual Studio Community 2017 for Mac版本7.3.2(版本12)运行时:     单声道5.4.1.7(2017-06 / e66d9abbb27)(64位)

         

    NuGetVersión:4.3.1.4445

         

    .NET Core Runtime:/ usr / local / share / dotnet /dotnetVersióndetiempo de   ejecución:2.0.0 SDK:/usr/local/share/dotnet/sdk/2.0.0/SdksVersión   del SDK:2.0.0 SDK de MSBuild:   /Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks

1 个答案:

答案 0 :(得分:0)

此问题并非特定于Visual Studio for Mac。如果您从命令行使用 dotnet ,则会出现相同的行为。

使用Visual Studio for Mac和dotnet CLI,在恢复NuGet包时,会在项目目录中创建obj目录,并且只包含恢复生成的文件:

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

在构建文件中创建在../Bin/Core/Debug和../Bin/Core/obj目录中。

您可以通过设置BaseIntermediateOutputPath来获得所需的行为。但是,在项目文件中设置它可能会导致problems

最简单的解决方案是在解决方案目录中创建Directory.Build.props文件,并在那里设置BaseIntermediateOutputPath属性。

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

然后,将在您想要的目录中创建生成的NuGet恢复文件。

Visual Studio for Mac似乎仍然希望在项目打开时在项目中创建一个空的obj目录,但在恢复或构建后没有文件。