You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"Imitation is the sincerest form of flattery". Copy implementations
from the Microsoft.DotNet.Arcade.Sdk, that is used by .NET projects
https://github.com/dotnet/arcade/blob/master/Documentation/ArcadeSdk.md.
This SDK offers a number features and provides a number of tasks
such as clean, restore, build, rebuild, test, etc.
Which both work from Visual Studio and command line.
I decided against using the actual package for a number of reasons:
1. The package isn't published to nuget.org.
2. The package is being actively developed, and may be causing unnecessary
overhead, if the package maintainers modify behaviours.
3. The package contains significantly more functionality, catering for the
Microsoft .NET development process.
4. The package would require a significant number of adjustments to the
project and its structure, to make use of it.
Taking a limited subset of SDK provides a greater control over the executed
targets and their configurations.
Notable changes include:
* Builds can now be initiated from commands line via `.\build.cmd`.
There are a number of switches are/will be available such as: `-test`, `-clean`.
* All artifacts are now redirected to .\artifacts folder, that includes
binaries, obj, logs and test results.
* All plugins binaries are places under .\artifacts\bin\GitExtensions\[configuration]\Plugins.
This will allow for a more streamlined plugin development.
# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe058e6b2e03914d17e6/powershell/VstsTaskSdk/LoggingCommandFunctions.ps1 and modified.
2
+
3
+
# NOTE: You should not be calling these method directly as they are likely to change. Instead you should be calling the Write-Pipeline* functions defined in tools.ps1
4
+
5
+
$script:loggingCommandPrefix='';
6
+
$script:loggingCommandEscapeMappings=@( # TODO: WHAT ABOUT "="? WHAT ABOUT "%"?
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
3
+
<Project>
4
+
<PropertyGroup>
5
+
<!--
6
+
When the bootstrapper script initializes a repo it restores an empty project that imports the toolset SDK.
7
+
It invokes WriteToolsetLocation target with __ToolsetLocationOutputFile set to the path where the location of
8
+
SDK Build.proj entry point is to be stored. Suppress all other imports for that project.
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
3
+
<Project>
4
+
<!--
5
+
If a project specifies ExcludeFromSourceBuild=true during a source build suppress all targets and emulate a no-op
6
+
(empty common targets like Restore, Build, Pack, etc.).
7
+
-->
8
+
<PropertyGroup>
9
+
<_SuppressAllTargets>false</_SuppressAllTargets>
10
+
<_SuppressAllTargetsCondition="'$(DotNetBuildFromSource)' == 'true' and '$(ExcludeFromSourceBuild)' == 'true'">true</_SuppressAllTargets>
11
+
</PropertyGroup>
12
+
13
+
<!--
14
+
Output the location of the Build.proj so that the build driver can find where it was restored.
15
+
Ideally we would have msbuild API to do that for an SDK: https://github.com/Microsoft/msbuild/issues/2992
0 commit comments