How can I change the default build output directory in Visual Studio Code
Solution 1
VSCode uses dotnet CLI and particularly for building the dotnet build command. Among others, it has the following option
-o|--output <OUTPUT_DIRECTORY>
Directory in which to place the built binaries.
Assuming your building task is defined in .vscode/tasks.json
file:
{
"version": "2.0.0",
"tasks": [
{
"taskName": "build",
"command": "dotnet build",
...
}
]
}
You may add -o
arg with the desired path. For example, change to:
...
"command": "dotnet build -o ${workspaceRoot}/bin/another_Debug/",
...
where ${workspaceFolder}
is one of VSCode predefined variables:
${workspaceFolder} the path of the workspace folder that contains the tasks.json file
Solution 2
If you want a consistent behavior from VSCode, VS and the dotnet CLI, I suggest editing the csproj file to set the output path by adding this:
<PropertyGroup>
<OutputPath>..\custom-output-dir\</OutputPath>
<!-- Remove this if you multi-target and need the created net*, netcoreapp* subdirs -->
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
The second property prevents the SDK from adding a subdirectory for the target framework, which is needed for multi-targeting builds, but not so if you only target a single framework (= when you only have a TargetFramework
property).
You can also use other properties when setting the path, for instance:
<OutputPath>..\custom-output-dir\$(Configuration)\$(MSBuildProjectName)\</OutputPath>
Assuming your project is MyProj.csproj
, the output path would then be ..\cusotm-output-dir\Debug\MyProj\
Eduardo Slee
Updated on June 14, 2022Comments
-
Eduardo Slee almost 2 years
I'm new to Visual Studio Code. I want to define the output directory in my csproj. I don't know where to change in Visual Studio Code the destination folder to locate the dll files generated.
-
Lithium over 6 yearsIs it not Right Click a project >> Properties>>Build>>Output>>Output Path like the normal visual studios?
-
Eduardo Slee over 6 yearsNo...it does not work this way in Visual Studio Code
-