Re: SCons very slow on GitHub actions
"Joseph C. Brill" <[email protected]> Thu, 1 May 2025 10:20:20 -0400
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <[email protected]> |
This is a multipart message in MIME format.
--===============0951304995722222907==
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0001_01DBBA82.A4B10120"
Content-Language: en-us
This is a multipart message in MIME format.
------=_NextPart_000_0001_01DBBA82.A4B10120
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
There are a significant number of IO reads of the OS drive file system for
MSVC batch file invocations and SCons MSVC initialization.
In general, modern MSVC batch file invocations are "expensive".
It wouldn't hurt to add the following to your build environment:
set VSCMD_SKIP_SENDTELEMETRY=1
If nothing else, this may skip a powershell invocation to setup sending
telemetry.
After a brief look at the SConstructs in the SCons example, OSARA, and NVDA
projects, I believe that the number of MSVC batch file invocations on an
amd64 box for each is likely:
* 1: SCons example (0 default environments and 1 user environment)
* 2: OSARA (0 default environments and 2 user environments)
* 4: NVDA (1 default environment and 3 user environments)
What follows is a high-level description of how MSVC is initialized. Errors
are possible. It may be easier to discuss in an SCons discussion.
Simplified steps for MSVC initialization:
* Find the location of the vswhere executable
* Invoke vswhere
* For each version of MSVC detected:
* Check for the existence of a set of required compiler files
* For each Environment() unique combination of MSVC instance and
arguments:
* Call the MSVC batch file to configure environment
Vswhere uses a "%ProgramData%" subdirectory (OS drive) to load the COM
server and possibly read data.
Calling the 2022 MSVC batch file to configure the environment entails (local
configuration):
* 17 or more batch file invocations
* 1 vswhere.exe invocation
* 0 or 1 powershell invocations to setup telemetry
("%VSCMD_SKIP_SENDTELEMETRY%"=="")
MSVC batch files may perform any of the following zero of more times:
* Check for the existence of directories and/or files
* Use the "where" command to search the system path
* Query the registry
* Change directories (cd/push/pop)
* File read
The MSVC batch file skeleton call sequence below is for an amd64 box with
HOST_ARCH="amd64" and TARGET_ARCH="amd64".
C:\Program Files\Microsoft Visual
Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat:
* "%~dp0vcvarsall.bat" x64 %*
o "%~dp0..\..\..\Common7\Tools\vsdevcmd.bat"
* "%~dp0vsdevcmd\core\vsdevcmd_start.bat"
* "%~dp0parse_cmd.bat" %*
* vswhere.exe
* "%VS170COMNTOOLS%VsDevCmd\core\dotnet.bat"
* Reg queries
* "%VS170COMNTOOLS%VsDevCmd\core\msbuild.bat"
* Path existence
* Where
* "%VS170COMNTOOLS%VsDevCmd\core\winsdk.bat"
* Reg queries
* Paths existence
* "%VS170COMNTOOLS%vsdevcmd\ext\ConnectionManagerExe.bat"
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\diaghub.bat"
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\html_help.bat"
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\netfxsdk.bat"
* Reg queries
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\perf_tools.bat"
* Reg queries
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\roslyn.bat"
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\team_explorer.bat"
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\testwindow.bat"
* Path existence
* Where
* "%VS170COMNTOOLS%vsdevcmd\ext\vcvars.bat"
* Path existence
* Dir contents
* Where
* File read
* if "%VSCMD_SKIP_SENDTELEMETRY%"==""
* Powershell Send Telemetry
* "%~dp0vsdevcmd\core\vsdevcmd_end.bat"
* Possible directory changes
------=_NextPart_000_0001_01DBBA82.A4B10120
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 15 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier New";
mso-ligatures:none;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:840314615;
mso-list-type:hybrid;
mso-list-template-ids:2120259784 1514818750 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Aptos;
mso-bidi-font-family:"Times New Roman";}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1
{mso-list-id:1879508020;
mso-list-type:hybrid;
mso-list-template-ids:-784183916 184579754 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Aptos;
mso-bidi-font-family:"Times New Roman";}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2
{mso-list-id:1952976984;
mso-list-type:hybrid;
mso-list-template-ids:-1280788962 -499249062 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Aptos;
mso-bidi-font-family:"Times New Roman";}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l3
{mso-list-id:1974367319;
mso-list-type:hybrid;
mso-list-template-ids:-122753102 -1486988762 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Aptos;
mso-bidi-font-family:"Times New Roman";}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;
font-family:"Courier New";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.25in;
text-indent:-.25in;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.75in;
text-indent:-.25in;
font-family:Symbol;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.25in;
text-indent:-.25in;
font-family:"Courier New";}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.75in;
text-indent:-.25in;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.25in;
text-indent:-.25in;
font-family:Symbol;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.75in;
text-indent:-.25in;
font-family:"Courier New";}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:4.25in;
text-indent:-.25in;
font-family:Wingdings;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US =
link=3D"#467886" vlink=3D"#96607D" style=3D'word-wrap:break-word'><div =
class=3DWordSection1><p class=3DMsoNormal>There are a significant number =
of IO reads of the OS drive file system for MSVC batch file invocations =
and SCons MSVC initialization.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>In general, =
modern MSVC batch file invocations are =
“expensive”.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>It =
wouldn’t hurt to add the following to your build =
environment:<o:p></o:p></p><p class=3DMsoNormal> set =
<span =
style=3D'color:black'>VSCMD_SKIP_SENDTELEMETRY=3D1</span><o:p></o:p></p><=
p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>If nothing =
else, this may skip a powershell invocation to setup sending =
telemetry.<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p =
class=3DMsoNormal>After a brief look at the SConstructs in the SCons =
example, OSARA, and NVDA projects, I believe that the number of MSVC =
batch file invocations on an amd64 box for each is =
likely:<o:p></o:p></p><ul style=3D'margin-top:0in' type=3Ddisc><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l0 level1 =
lfo4'>1: SCons example (0 default environments and 1 user =
environment)<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l0 level1 lfo4'>2: OSARA (0 default =
environments and 2 user environments)<o:p></o:p></li><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l0 level1 =
lfo4'>4: NVDA (1 default environment and 3 user environments) =
<o:p></o:p></li></ul><p class=3DMsoNormal><o:p> </o:p></p><p =
class=3DMsoNormal>What follows is a high-level description of how MSVC =
is initialized. Errors are possible. It may be easier to =
discuss in an SCons discussion.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Simplified =
steps for MSVC initialization:<o:p></o:p></p><ul =
style=3D'margin-top:0in' type=3Ddisc><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l1 level1 lfo3'>Find the location of =
the vswhere executable<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l1 level1 lfo3'>Invoke =
vswhere<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l1 level1 lfo3'>For each version of =
MSVC detected:<o:p></o:p></li><ul style=3D'margin-top:0in' =
type=3Dcircle><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l1 level2 lfo3'>Check for the =
existence of a set of required compiler files<o:p></o:p></li></ul><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l1 level1 =
lfo3'>For each Environment() unique combination of MSVC instance and =
arguments:<o:p></o:p></li><ul style=3D'margin-top:0in' type=3Dcircle><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l1 level2 =
lfo3'>Call the MSVC batch file to configure =
environment<o:p></o:p></li></ul></ul><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Vswhere uses =
a “%ProgramData%” subdirectory (OS drive) to load the =
COM server and possibly read data.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Calling the =
2022 MSVC batch file to configure the environment entails (local =
configuration):<o:p></o:p></p><ul style=3D'margin-top:0in' =
type=3Ddisc><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>17 or more batch file =
invocations<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>1 vswhere.exe =
invocation<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>0 or 1 powershell =
invocations to setup telemetry (<span =
style=3D'color:black'>"%VSCMD_SKIP_SENDTELEMETRY%"=3D=3D"&=
quot;)</span><o:p></o:p></li></ul><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>MSVC batch =
files may perform any of the following zero of more =
times:<o:p></o:p></p><ul style=3D'margin-top:0in' type=3Ddisc><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l2 level1 =
lfo2'>Check for the existence of directories and/or =
files<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>Use the =
“where” command to search the system path<o:p></o:p></li><li =
class=3DMsoListParagraph style=3D'margin-left:0in;mso-list:l2 level1 =
lfo2'>Query the registry<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>Change directories =
(cd/push/pop)<o:p></o:p></li><li class=3DMsoListParagraph =
style=3D'margin-left:0in;mso-list:l2 level1 lfo2'>File =
read<o:p></o:p></li></ul><p class=3DMsoNormal><o:p> </o:p></p><p =
class=3DMsoNormal>The MSVC batch file skeleton call sequence below is =
for an amd64 box with HOST_ARCH=3D”amd64” and =
TARGET_ARCH=3D”amd64”.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>C:\Program =
Files\Microsoft Visual =
Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat:<o:p></o:p></p><p =
class=3DMsoListParagraph =
style=3D'margin-left:.25in;text-indent:-.25in;mso-list:l3 level1 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-family:Symbol;color:black;mso-ligatures:none'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'color:black;mso-ligatures:none'>"%~dp0vcvarsall.bat" =
x64 %*<o:p></o:p></span></p><pre =
style=3D'margin-left:.75in;text-indent:-.25in;mso-list:l3 level2 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;color:black'><span =
style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times New Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%~dp0..\..\..\Common7\Tools\vsdevcmd.bat"<o:p></o:p></span></pre>=
<pre style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%~dp0vsdevcmd\core\vsdevcmd_start.bat"<o:p></o:p></span></pre><pr=
e style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%~dp0parse_cmd.bat" %*<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>vsw=
here.exe<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%VsDevCmd\core\dotnet.bat"<o:p></o:p></span></pre>=
<pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Reg=
queries<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%VsDevCmd\core\msbuild.bat"<o:p></o:p></span></pre=
><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%VsDevCmd\core\winsdk.bat"<o:p></o:p></span></pre>=
<pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Reg=
queries<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
hs existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\ConnectionManagerExe.bat"<o:p></o:p>=
</span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\diaghub.bat"<o:p></o:p></span></pre>=
<pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\html_help.bat"<o:p></o:p></span></pr=
e><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\netfxsdk.bat"<o:p></o:p></span></pre=
><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Reg=
queries<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\perf_tools.bat"<o:p></o:p></span></p=
re><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 =
level4 lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Reg=
queries<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\roslyn.bat"<o:p></o:p></span></pre><=
pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\team_explorer.bat"<o:p></o:p></span>=
</pre><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 =
level4 lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\testwindow.bat"<o:p></o:p></span></p=
re><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 =
level4 lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%VS170COMNTOOLS%vsdevcmd\ext\vcvars.bat"<o:p></o:p></span></pre><=
pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pat=
h existence<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Dir=
contents<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Whe=
re<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Fil=
e read<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>if =
"%VSCMD_SKIP_SENDTELEMETRY%"=3D=3D""<o:p></o:p></span=
></pre><pre style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 =
level4 lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pow=
ershell Send Telemetry<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.25in;text-indent:-.25in;mso-list:l3 level3 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Wingdings;color:black'><span =
style=3D'mso-list:Ignore'>§<span style=3D'font:7.0pt "Times New =
Roman"'> </span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>&qu=
ot;%~dp0vsdevcmd\core\vsdevcmd_end.bat"<o:p></o:p></span></pre><pre =
style=3D'margin-left:1.75in;text-indent:-.25in;mso-list:l3 level4 =
lfo1;background:white'><![if !supportLists]><span =
style=3D'font-size:12.0pt;font-family:Symbol;color:black'><span =
style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times New =
Roman"'> =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Aptos",sans-serif;color:black'>Pos=
sible directory changes<o:p></o:p></span></pre><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt'><o:p> </o:p></span></p></div></body></htm=
l>
------=_NextPart_000_0001_01DBBA82.A4B10120--
--===============0951304995722222907==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
--===============0951304995722222907==--