Visual Studio Mac: 不支持在别处输出obj/bin文件夹?
Visual Studio Mac: Output obj / bin folder elsewhere not supported?
我有一个多项目解决方案,希望将所有生成的 in/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>
但是:
obj
文件夹仍然在原始位置重新创建。是
也在所需的位置,但 EMPTY。
- "restore packages"触发器“1”并没有把它们放在想要的位置
- 构建项目时,会填充 obj 文件夹。
这是版本:
Visual Studio Community 2017 for Mac Version 7.3.2 (build 12) Runtime:
Mono 5.4.1.7 (2017-06/e66d9abbb27) (64-bit)
NuGet Versión: 4.3.1.4445
.NET Core Runtime: /usr/local/share/dotnet/dotnet Versión de tiempo de
ejecución: 2.0.0 SDK: /usr/local/share/dotnet/sdk/2.0.0/Sdks Versión
del SDK: 2.0.0 SDK de MSBuild:
/Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks
此问题并非 Visual Studio 或 Mac 所特有。如果您从命令行使用 dotnet,则会发生相同的行为。
使用 Visual Studio for Mac 和 dotnet CLI,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 获得您想要的行为。但是在项目文件本身中设置它会导致 problems.
最简单的解决方案是在解决方案目录中创建一个 Directory.Build.props 文件并在其中设置 BaseIntermediateOutputPath 属性。
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath>..\Bin\Core\obj\</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
然后生成的 NuGet 还原文件将创建在您想要的目录中。
Visual Studio for Mac 似乎仍然想在项目打开时在项目中创建一个空的 obj 目录,但在恢复或构建后没有文件。
我有一个多项目解决方案,希望将所有生成的 in/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>
但是:
obj
文件夹仍然在原始位置重新创建。是 也在所需的位置,但 EMPTY。- "restore packages"触发器“1”并没有把它们放在想要的位置
- 构建项目时,会填充 obj 文件夹。
这是版本:
Visual Studio Community 2017 for Mac Version 7.3.2 (build 12) Runtime: Mono 5.4.1.7 (2017-06/e66d9abbb27) (64-bit)
NuGet Versión: 4.3.1.4445
.NET Core Runtime: /usr/local/share/dotnet/dotnet Versión de tiempo de ejecución: 2.0.0 SDK: /usr/local/share/dotnet/sdk/2.0.0/Sdks Versión del SDK: 2.0.0 SDK de MSBuild: /Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/msbuild/15.0/bin/Sdks
此问题并非 Visual Studio 或 Mac 所特有。如果您从命令行使用 dotnet,则会发生相同的行为。
使用 Visual Studio for Mac 和 dotnet CLI,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 获得您想要的行为。但是在项目文件本身中设置它会导致 problems.
最简单的解决方案是在解决方案目录中创建一个 Directory.Build.props 文件并在其中设置 BaseIntermediateOutputPath 属性。
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath>..\Bin\Core\obj\</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
然后生成的 NuGet 还原文件将创建在您想要的目录中。
Visual Studio for Mac 似乎仍然想在项目打开时在项目中创建一个空的 obj 目录,但在恢复或构建后没有文件。