dotnet / dotnet/msbuild

Add a master switch for copy type (actual copy, hard links, symlinks)

Open
#2,970 2 comments 0 reactions 0 assignees View on GitHub
triaged User Experience
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 13h
Merged PRs (30d)
133

Description

Currently there is no single gesture for the user to specify the copy behaviour across the entire build. Targets use custom properties to control their Copy task behaviour (e.g. `CreateHardLinksForCopyAdditionalFilesIfPossible `, `CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible`, etc). This makes it hard for third party copying tasks to know what to do. Should they add their own custom property? Should they scan `Microsoft.Common.CurrentVersion.targets` and OR all the linking properties they find?

Implementation variants:
- add a command line switch `/linking:||` which gets exposed to tasks via IBuildEngine.
- cons: tasks that already have custom linking properties now have to reconcile their inputs with a potential IBuildEngine.LinkType
- add a plain old property in `Microsoft.Common.CurrentVersion.targets` to act as the master switch
- cons: only available to builds that are based on `Microsoft.Common.CurrentVersion.targets`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading Microsoft.Common.CurrentVersion.targets and the IBuildEngine interface, then trace the existing custom copy and linking properties named in the issue. Compare the proposed command-line and project-property approaches; done requires an agreed master copy-mode mechanism that third-party copy tasks can observe consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.