You've already forked setup-msbuild
mirror of
https://github.com/microsoft/setup-msbuild.git
synced 2025-07-01 20:53:15 +07:00
Compare commits
19 Commits
v1.1.1
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
54350c02db | |||
1ff57057b5 | |||
0e7c76c8f5 | |||
3ac564e2a5 | |||
d3ea839497 | |||
0a09b7fae9 | |||
0b93bd95fc | |||
cc48120b57 | |||
645e3f7313 | |||
1ccd12233c | |||
750ad4a08c | |||
8c3da926c2 | |||
e0b9f539d1 | |||
e38c2fa359 | |||
1bba226ea3 | |||
0b44c6745b | |||
34cfbaee7f | |||
a1c1eda384 | |||
d6496d378f |
21
.github/workflows/test.yml
vendored
21
.github/workflows/test.yml
vendored
@ -10,6 +10,14 @@ on:
|
||||
- dev
|
||||
paths-ignore:
|
||||
- '*.md'
|
||||
workflow_dispatch:
|
||||
branches:
|
||||
- dev
|
||||
- arm64
|
||||
- master
|
||||
paths-ignore:
|
||||
- '*.md'
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@ -34,16 +42,27 @@ jobs:
|
||||
PATH: ''
|
||||
|
||||
- name: Setup MSBuild (x64)
|
||||
id: setup_msbuild_path
|
||||
if: always()
|
||||
id: setup_msbuild_path_x64
|
||||
uses: ./
|
||||
with:
|
||||
vs-prerelease: true
|
||||
msbuild-architecture: 'x64'
|
||||
|
||||
- name: Setup MSBuild (arm64)
|
||||
if: always()
|
||||
id: setup_msbuild_path_arm
|
||||
uses: ./
|
||||
with:
|
||||
vs-prerelease: true
|
||||
msbuild-architecture: 'arm64'
|
||||
|
||||
- name: echo msbuild path
|
||||
run: |
|
||||
echo "vswhere-path: ${{ steps.setup_msbuild_explicit.outputs.msbuildPath }}"
|
||||
echo "PATH: ${{ steps.setup_msbuild_path.outputs.msbuildPath }}"
|
||||
echo "ARM PATH: ${{ steps.setup_msbuild_path_arm.outputs.msbuildPath }}"
|
||||
echo "ARM PATH: ${{ steps.setup_msbuild_path_x64.outputs.msbuildPath }}"
|
||||
echo "Fallback: ${{ steps.setup_msbuild_fallback.outputs.msbuildPath }}"
|
||||
|
||||
- name: echo MSBuild
|
||||
|
@ -39,7 +39,7 @@ If you need your Actions runner to target a pre-release version of Visual Studio
|
||||
```
|
||||
|
||||
### Specifying MSBuild architecture (optional)
|
||||
By default the action will use the x86 architecture for MSBuild, but it is possible to target the x64 versions instead. Simply add the `msbuild-architecture` input. Valid input values are `x86` (default) and `x64`.
|
||||
By default the action will use the x86 architecture for MSBuild, but it is possible to target the x64 versions instead. Simply add the `msbuild-architecture` input. Valid input values are `x86` (default), `x64`, and `arm64`. Note that the success of these will rely on the runner OS.
|
||||
|
||||
```yml
|
||||
- name: Add msbuild to PATH
|
||||
|
18
action-types.yml
Normal file
18
action-types.yml
Normal file
@ -0,0 +1,18 @@
|
||||
# See https://github.com/krzema12/github-actions-typing
|
||||
inputs:
|
||||
vswhere-path:
|
||||
type: string
|
||||
vs-version:
|
||||
type: string
|
||||
vs-prerelease:
|
||||
type: boolean
|
||||
msbuild-architecture:
|
||||
type: enum
|
||||
name: Architecture
|
||||
allowed-values:
|
||||
- x86
|
||||
- x64
|
||||
- arm64
|
||||
outputs:
|
||||
msbuildPath:
|
||||
type: string
|
@ -15,7 +15,7 @@ inputs:
|
||||
description: 'Enable searching for pre-release versions of Visual Studio/MSBuild'
|
||||
required: false
|
||||
msbuild-architecture:
|
||||
description: 'The preferred processor architecture of MSBuild. Can be either "x86" or "x64". "x64" is only available from Visual Studio version 17.0 and later.'
|
||||
description: 'The preferred processor architecture of MSBuild. Can be either "x86", "x64", or "arm64". "x64" is only available from Visual Studio version 17.0 and later.'
|
||||
required: false
|
||||
default: 'x86'
|
||||
outputs:
|
||||
|
2397
dist/index.js
vendored
2397
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
4847
package-lock.json
generated
4847
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setup-msbuild",
|
||||
"version": "1.1.1",
|
||||
"version": "1.3.1",
|
||||
"private": true,
|
||||
"description": "Helps set up specific MSBuild tool into PATH for later usage.",
|
||||
"main": "lib/main.js",
|
||||
@ -28,7 +28,7 @@
|
||||
"author": "Microsoft",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/core": "^1.10.0",
|
||||
"@actions/exec": "^1.0.3",
|
||||
"@actions/tool-cache": "^1.3.0"
|
||||
},
|
||||
@ -38,8 +38,8 @@
|
||||
"@typescript-eslint/parser": "^2.8.0",
|
||||
"@zeit/ncc": "^0.20.5",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-plugin-github": "^2.0.0",
|
||||
"eslint-plugin-jest": "^22.21.0",
|
||||
"eslint-plugin-github": "^4.8.0",
|
||||
"eslint-plugin-jest": "^27.2.2",
|
||||
"jest": "^24.9.0",
|
||||
"jest-circus": "^24.9.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
|
14
src/main.ts
14
src/main.ts
@ -9,7 +9,7 @@ const IS_WINDOWS = process.platform === 'win32'
|
||||
const VS_VERSION = core.getInput('vs-version') || 'latest'
|
||||
const VSWHERE_PATH = core.getInput('vswhere-path')
|
||||
const ALLOW_PRERELEASE = core.getInput('vs-prerelease') || 'false'
|
||||
const MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86'
|
||||
let MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86'
|
||||
|
||||
// if a specific version of VS is requested
|
||||
let VSWHERE_EXEC = '-products * -requires Microsoft.Component.MSBuild -property installationPath -latest '
|
||||
@ -71,12 +71,16 @@ async function run(): Promise<void> {
|
||||
const installationPath = data.toString().trim()
|
||||
core.debug(`Found installation path: ${installationPath}`)
|
||||
|
||||
// x64 only exists in one possible location, so no fallback probing
|
||||
if (MSBUILD_ARCH === "x64") {
|
||||
// x64 and arm64 only exist in one possible location, so no fallback probing
|
||||
if (MSBUILD_ARCH === 'x64' || MSBUILD_ARCH === 'arm64') {
|
||||
// x64 is actually amd64 so change to that
|
||||
if (MSBUILD_ARCH === 'x64') {
|
||||
MSBUILD_ARCH = 'amd64'
|
||||
}
|
||||
let toolPath = path.join(
|
||||
installationPath,
|
||||
'MSBuild\\Current\\Bin\\amd64\\MSBuild.exe'
|
||||
);
|
||||
`MSBuild\\Current\\Bin\\${MSBUILD_ARCH}\\MSBuild.exe`
|
||||
)
|
||||
core.debug(`Checking for path: ${toolPath}`)
|
||||
if (!fs.existsSync(toolPath)) {
|
||||
return
|
||||
|
Reference in New Issue
Block a user