mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-11 04:38:24 -06:00
Remove TerminalAzBridge and use AzureConnection directly (#19528)
We used to run the cloud shell connector in an intermediate process because our VT implementation lived mostly in conhost. James fixed that up over the intervening years, and since #17510 landed Terminal is exposed to 100% of application-originated VT. That means we no longer need this workaround, its build steps, or anything else about it. Closes #4661
This commit is contained in:
parent
63d7a19ce5
commit
4b946c0d5c
@ -723,16 +723,6 @@
|
|||||||
<Build Solution="Fuzzing|x64" Project="false" />
|
<Build Solution="Fuzzing|x64" Project="false" />
|
||||||
<Build Solution="Fuzzing|x86" Project="false" />
|
<Build Solution="Fuzzing|x86" Project="false" />
|
||||||
</Project>
|
</Project>
|
||||||
<Project Path="src/cascadia/TerminalAzBridge/TerminalAzBridge.vcxproj" Id="067f0a06-fcb7-472c-96e9-b03b54e8e18d">
|
|
||||||
<BuildDependency Project="src/cascadia/TerminalConnection/TerminalConnection.vcxproj" />
|
|
||||||
<BuildType Solution="AuditMode|x64" Project="Release" />
|
|
||||||
<Platform Solution="*|Any CPU" Project="Win32" />
|
|
||||||
<Build Solution="*|Any CPU" Project="false" />
|
|
||||||
<Build Solution="AuditMode|x64" Project="false" />
|
|
||||||
<Build Solution="Fuzzing|ARM64" Project="false" />
|
|
||||||
<Build Solution="Fuzzing|x64" Project="false" />
|
|
||||||
<Build Solution="Fuzzing|x86" Project="false" />
|
|
||||||
</Project>
|
|
||||||
<Project Path="src/cascadia/UIHelpers/UIHelpers.vcxproj" Id="6515f03f-e56d-4db4-b23d-ac4fb80db36f">
|
<Project Path="src/cascadia/UIHelpers/UIHelpers.vcxproj" Id="6515f03f-e56d-4db4-b23d-ac4fb80db36f">
|
||||||
<Build Solution="*|Any CPU" Project="false" />
|
<Build Solution="*|Any CPU" Project="false" />
|
||||||
<Build Solution="AuditMode|ARM64" Project="false" />
|
<Build Solution="AuditMode|ARM64" Project="false" />
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
"PackageContents/WindowsTerminalShellExt.dll",
|
"PackageContents/WindowsTerminalShellExt.dll",
|
||||||
|
|
||||||
// The rest
|
// The rest
|
||||||
"PackageContents/TerminalAzBridge.exe",
|
|
||||||
"PackageContents/wt.exe",
|
"PackageContents/wt.exe",
|
||||||
"PackageContents/WindowsTerminal.exe",
|
"PackageContents/WindowsTerminal.exe",
|
||||||
"PackageContents/elevate-shim.exe"
|
"PackageContents/elevate-shim.exe"
|
||||||
|
|||||||
@ -77,9 +77,6 @@
|
|||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WindowsTerminal\WindowsTerminal.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WindowsTerminal\WindowsTerminal.vcxproj">
|
||||||
<Project>{CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}</Project>
|
<Project>{CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalAzBridge\TerminalAzBridge.vcxproj">
|
|
||||||
<Project>{067F0A06-FCB7-472C-96E9-B03B54E8E18D}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\ShellExtension\WindowsTerminalShellExt.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\ShellExtension\WindowsTerminalShellExt.vcxproj">
|
||||||
<Project>{f2ed628a-db22-446f-a081-4cc845b51a2b}</Project>
|
<Project>{f2ed628a-db22-446f-a081-4cc845b51a2b}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
|||||||
@ -1490,19 +1490,9 @@ namespace winrt::TerminalApp::implementation
|
|||||||
|
|
||||||
if (connectionType == TerminalConnection::AzureConnection::ConnectionType() &&
|
if (connectionType == TerminalConnection::AzureConnection::ConnectionType() &&
|
||||||
TerminalConnection::AzureConnection::IsAzureConnectionAvailable())
|
TerminalConnection::AzureConnection::IsAzureConnectionAvailable())
|
||||||
{
|
|
||||||
std::filesystem::path azBridgePath{ wil::GetModuleFileNameW<std::wstring>(nullptr) };
|
|
||||||
azBridgePath.replace_filename(L"TerminalAzBridge.exe");
|
|
||||||
if constexpr (Feature_AzureConnectionInProc::IsEnabled())
|
|
||||||
{
|
{
|
||||||
connection = TerminalConnection::AzureConnection{};
|
connection = TerminalConnection::AzureConnection{};
|
||||||
}
|
valueSet = TerminalConnection::ConptyConnection::CreateSettings(winrt::hstring{},
|
||||||
else
|
|
||||||
{
|
|
||||||
connection = TerminalConnection::ConptyConnection{};
|
|
||||||
}
|
|
||||||
|
|
||||||
valueSet = TerminalConnection::ConptyConnection::CreateSettings(azBridgePath.native(),
|
|
||||||
L".",
|
L".",
|
||||||
L"Azure",
|
L"Azure",
|
||||||
false,
|
false,
|
||||||
|
|||||||
@ -1,87 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
#include "pch.h"
|
|
||||||
#include "ConsoleInputReader.h"
|
|
||||||
#include "unicode.hpp"
|
|
||||||
|
|
||||||
ConsoleInputReader::ConsoleInputReader(HANDLE handle) :
|
|
||||||
_handle(handle)
|
|
||||||
{
|
|
||||||
_buffer.resize(BufferSize);
|
|
||||||
_convertedString.reserve(BufferSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConsoleInputReader::SetWindowSizeChangedCallback(std::function<void()> callback)
|
|
||||||
{
|
|
||||||
_windowSizeChangedCallback = std::move(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<std::wstring_view> ConsoleInputReader::Read()
|
|
||||||
{
|
|
||||||
DWORD readCount{ 0 };
|
|
||||||
|
|
||||||
_convertedString.clear();
|
|
||||||
while (_convertedString.empty())
|
|
||||||
{
|
|
||||||
_buffer.resize(BufferSize);
|
|
||||||
auto succeeded =
|
|
||||||
ReadConsoleInputW(_handle, _buffer.data(), gsl::narrow_cast<DWORD>(_buffer.size()), &readCount);
|
|
||||||
if (!succeeded)
|
|
||||||
{
|
|
||||||
return std::nullopt;
|
|
||||||
}
|
|
||||||
|
|
||||||
_buffer.resize(readCount);
|
|
||||||
for (auto it = _buffer.begin(); it != _buffer.end(); ++it)
|
|
||||||
{
|
|
||||||
if (it->EventType == WINDOW_BUFFER_SIZE_EVENT && _windowSizeChangedCallback)
|
|
||||||
{
|
|
||||||
_windowSizeChangedCallback();
|
|
||||||
}
|
|
||||||
else if (it->EventType == KEY_EVENT)
|
|
||||||
{
|
|
||||||
const auto& keyEvent = it->Event.KeyEvent;
|
|
||||||
if (keyEvent.bKeyDown || (!keyEvent.bKeyDown && keyEvent.wVirtualKeyCode == VK_MENU))
|
|
||||||
{
|
|
||||||
// Got a high surrogate at the end of the buffer
|
|
||||||
if (IS_HIGH_SURROGATE(keyEvent.uChar.UnicodeChar))
|
|
||||||
{
|
|
||||||
_highSurrogate.emplace(keyEvent.uChar.UnicodeChar);
|
|
||||||
continue; // we've consumed it -- only dispatch it if we get a low
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_LOW_SURROGATE(keyEvent.uChar.UnicodeChar))
|
|
||||||
{
|
|
||||||
// No matter what we do, we want to destructively consume the high surrogate
|
|
||||||
if (const auto oldHighSurrogate{ std::exchange(_highSurrogate, std::nullopt) })
|
|
||||||
{
|
|
||||||
_convertedString.push_back(*_highSurrogate);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// If we get a low without a high surrogate, we've done everything we can.
|
|
||||||
// This is an illegal state.
|
|
||||||
_convertedString.push_back(UNICODE_REPLACEMENT);
|
|
||||||
continue; // onto the next event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// (\0 with a scancode is probably a modifier key, not a VT input key)
|
|
||||||
if (keyEvent.uChar.UnicodeChar != L'\0' || keyEvent.wVirtualScanCode == 0)
|
|
||||||
{
|
|
||||||
if (_highSurrogate) // non-destructive: we don't want to set it to nullopt needlessly for every character
|
|
||||||
{
|
|
||||||
// If we get a high surrogate *here*, we didn't find a low surrogate.
|
|
||||||
// This state is also illegal.
|
|
||||||
_convertedString.push_back(UNICODE_REPLACEMENT);
|
|
||||||
_highSurrogate.reset();
|
|
||||||
}
|
|
||||||
_convertedString.push_back(keyEvent.uChar.UnicodeChar);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return _convertedString;
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
/*++
|
|
||||||
|
|
||||||
Copyright (c) Microsoft Corporation.
|
|
||||||
Licensed under the MIT license.
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
ConsoleInputReader.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
This file contains a class whose sole purpose is to
|
|
||||||
abstract away a bunch of details you usually need to
|
|
||||||
know to read VT from a console input handle.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
|
|
||||||
class ConsoleInputReader
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit ConsoleInputReader(HANDLE handle);
|
|
||||||
void SetWindowSizeChangedCallback(std::function<void()> callback);
|
|
||||||
std::optional<std::wstring_view> Read();
|
|
||||||
|
|
||||||
private:
|
|
||||||
static constexpr size_t BufferSize{ 128 };
|
|
||||||
|
|
||||||
HANDLE _handle;
|
|
||||||
std::wstring _convertedString;
|
|
||||||
std::vector<INPUT_RECORD> _buffer;
|
|
||||||
std::optional<wchar_t> _highSurrogate;
|
|
||||||
std::function<void()> _windowSizeChangedCallback;
|
|
||||||
};
|
|
||||||
@ -1,93 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{067F0A06-FCB7-472C-96E9-B03B54E8E18D}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>TerminalAzBridge</RootNamespace>
|
|
||||||
<ProjectName>TerminalAzBridge</ProjectName>
|
|
||||||
<TargetName>TerminalAzBridge</TargetName>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<OpenConsoleUniversalApp>false</OpenConsoleUniversalApp>
|
|
||||||
<ApplicationType>Windows Store</ApplicationType>
|
|
||||||
<TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>
|
|
||||||
<VersionInfoFileDescription>Windows Terminal Azure Cloud Shell Connector</VersionInfoFileDescription>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Label="NuGet Dependencies">
|
|
||||||
<TerminalCppWinrt>true</TerminalCppWinrt>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
|
||||||
<Import Project="$(OpenConsoleDir)src\common.nugetversions.props" />
|
|
||||||
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<GenerateManifest>true</GenerateManifest>
|
|
||||||
<EmbedManifest>true</EmbedManifest>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<!-- Source Files -->
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="pch.h" />
|
|
||||||
<ClInclude Include="ConsoleInputReader.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="pch.cpp">
|
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="main.cpp" />
|
|
||||||
<ClCompile Include="ConsoleInputReader.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<!-- Dependencies -->
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj">
|
|
||||||
<Project>{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
This ItemGroup and the Globals PropertyGroup below it are required in order
|
|
||||||
to enable F5 debugging for the unpackaged application
|
|
||||||
-->
|
|
||||||
<ItemGroup>
|
|
||||||
<PropertyPageSchema Include="$(VCTargetsPath)$(LangID)\debugger_general.xml" />
|
|
||||||
<PropertyPageSchema Include="$(VCTargetsPath)$(LangID)\debugger_local_windows.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
|
||||||
<Import Project="$(OpenConsoleDir)src\common.nugetversions.targets" />
|
|
||||||
|
|
||||||
<!-- These have to come after post.props because the Cpp common targets will inexplicably overwrite them. -->
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
BODGY
|
|
||||||
|
|
||||||
The wapproj `GetResolvedWinMD` target tries to get a winmd from every cppwinrt
|
|
||||||
executable we put in the package. But we DON'T produce a winmd. This makes the
|
|
||||||
FastUpToDate check fail every time, and leads to the whole wapproj build
|
|
||||||
running even if you're just f5'ing the package. EVEN AFTER A SUCCESSFUL BUILD.
|
|
||||||
|
|
||||||
Setting GenerateWindowsMetadata=false is enough to tell the build system that
|
|
||||||
we don't produce one, and get it off our backs.
|
|
||||||
-->
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<Link>
|
|
||||||
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
|
|
||||||
<Import Project="$(OpenConsoleDir)\build\rules\GenerateSxsManifestsFromWinmds.targets" />
|
|
||||||
</Project>
|
|
||||||
@ -1,108 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
#include "pch.h"
|
|
||||||
#include "winrt/Microsoft.Terminal.TerminalConnection.h"
|
|
||||||
#include "ConsoleInputReader.h"
|
|
||||||
|
|
||||||
using namespace winrt;
|
|
||||||
using namespace winrt::Windows::Foundation;
|
|
||||||
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
|
||||||
|
|
||||||
static til::size GetConsoleScreenSize(HANDLE outputHandle)
|
|
||||||
{
|
|
||||||
CONSOLE_SCREEN_BUFFER_INFOEX csbiex{};
|
|
||||||
csbiex.cbSize = sizeof(csbiex);
|
|
||||||
GetConsoleScreenBufferInfoEx(outputHandle, &csbiex);
|
|
||||||
return {
|
|
||||||
(csbiex.srWindow.Right - csbiex.srWindow.Left) + 1,
|
|
||||||
(csbiex.srWindow.Bottom - csbiex.srWindow.Top) + 1
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
static ConnectionState RunConnectionToCompletion(const ITerminalConnection& connection, HANDLE outputHandle, HANDLE inputHandle)
|
|
||||||
{
|
|
||||||
connection.TerminalOutput([outputHandle](const winrt::hstring& output) {
|
|
||||||
WriteConsoleW(outputHandle, output.data(), output.size(), nullptr, nullptr);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Detach a thread to spin the console read indefinitely.
|
|
||||||
// This application exits when the connection is closed, so
|
|
||||||
// the connection's lifetime will outlast this thread.
|
|
||||||
std::thread([connection, outputHandle, inputHandle] {
|
|
||||||
ConsoleInputReader reader{ inputHandle };
|
|
||||||
reader.SetWindowSizeChangedCallback([&]() {
|
|
||||||
const auto size = GetConsoleScreenSize(outputHandle);
|
|
||||||
|
|
||||||
connection.Resize(size.height, size.width);
|
|
||||||
});
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
auto input = reader.Read();
|
|
||||||
if (input)
|
|
||||||
{
|
|
||||||
connection.WriteInput(winrt_wstring_to_array_view(*input));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).detach();
|
|
||||||
|
|
||||||
std::condition_variable stateChangeVar;
|
|
||||||
std::optional<ConnectionState> state;
|
|
||||||
std::mutex stateMutex;
|
|
||||||
|
|
||||||
connection.StateChanged([&](auto&& /*s*/, auto&& /*e*/) {
|
|
||||||
std::unique_lock<std::mutex> lg{ stateMutex };
|
|
||||||
state = connection.State();
|
|
||||||
stateChangeVar.notify_all();
|
|
||||||
});
|
|
||||||
|
|
||||||
connection.Start();
|
|
||||||
|
|
||||||
std::unique_lock<std::mutex> lg{ stateMutex };
|
|
||||||
stateChangeVar.wait(lg, [&]() {
|
|
||||||
if (!state.has_value())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return state.value() == ConnectionState::Closed || state.value() == ConnectionState::Failed;
|
|
||||||
});
|
|
||||||
|
|
||||||
return state.value();
|
|
||||||
}
|
|
||||||
|
|
||||||
int wmain(int /*argc*/, wchar_t** /*argv*/)
|
|
||||||
{
|
|
||||||
winrt::init_apartment(winrt::apartment_type::single_threaded);
|
|
||||||
|
|
||||||
DWORD inputMode{}, outputMode{};
|
|
||||||
auto conIn{ GetStdHandle(STD_INPUT_HANDLE) }, conOut{ GetStdHandle(STD_OUTPUT_HANDLE) };
|
|
||||||
auto codepage{ GetConsoleCP() }, outputCodepage{ GetConsoleOutputCP() };
|
|
||||||
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(GetConsoleMode(conIn, &inputMode));
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(GetConsoleMode(conOut, &outputMode));
|
|
||||||
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(SetConsoleMode(conIn, ENABLE_WINDOW_INPUT | ENABLE_VIRTUAL_TERMINAL_INPUT));
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(SetConsoleMode(conOut, ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING | ENABLE_WRAP_AT_EOL_OUTPUT | DISABLE_NEWLINE_AUTO_RETURN));
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(SetConsoleCP(CP_UTF8));
|
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(SetConsoleOutputCP(CP_UTF8));
|
|
||||||
|
|
||||||
auto restoreConsoleModes = wil::scope_exit([&]() {
|
|
||||||
SetConsoleMode(conIn, inputMode);
|
|
||||||
SetConsoleMode(conOut, outputMode);
|
|
||||||
SetConsoleCP(codepage);
|
|
||||||
SetConsoleOutputCP(outputCodepage);
|
|
||||||
});
|
|
||||||
|
|
||||||
const auto size = GetConsoleScreenSize(conOut);
|
|
||||||
|
|
||||||
AzureConnection azureConn{};
|
|
||||||
winrt::Windows::Foundation::Collections::ValueSet vs{};
|
|
||||||
vs.Insert(L"initialRows", winrt::Windows::Foundation::PropertyValue::CreateUInt32(gsl::narrow_cast<uint32_t>(size.height)));
|
|
||||||
vs.Insert(L"initialCols", winrt::Windows::Foundation::PropertyValue::CreateUInt32(gsl::narrow_cast<uint32_t>(size.width)));
|
|
||||||
azureConn.Initialize(vs);
|
|
||||||
|
|
||||||
const auto state = RunConnectionToCompletion(azureConn, conOut, conIn);
|
|
||||||
|
|
||||||
return state == ConnectionState::Closed ? 0 : 1;
|
|
||||||
}
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
#include "pch.h"
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
/*++
|
|
||||||
Copyright (c) Microsoft Corporation
|
|
||||||
Licensed under the MIT license.
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
- pch.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
- Contains external headers to include in the precompile phase of console build process.
|
|
||||||
- Avoid including internal project headers. Instead include them only in the classes that need them (helps with test project building).
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// Ignore checked iterators warning from VC compiler.
|
|
||||||
#define _SCL_SECURE_NO_WARNINGS
|
|
||||||
|
|
||||||
// Block minwindef.h min/max macros to prevent <algorithm> conflict
|
|
||||||
#define NOMINMAX
|
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#define NOMCX
|
|
||||||
#define NOHELP
|
|
||||||
#define NOCOMM
|
|
||||||
#include <Unknwn.h>
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
|
|
||||||
#include "../inc/LibraryIncludes.h"
|
|
||||||
|
|
||||||
#include <wil/cppwinrt.h>
|
|
||||||
|
|
||||||
#include <winrt/Windows.system.h>
|
|
||||||
#include <winrt/Windows.Foundation.h>
|
|
||||||
#include <winrt/Windows.Foundation.Collections.h>
|
|
||||||
|
|
||||||
#include <wil/resource.h>
|
|
||||||
#include <wil/win32_helpers.h>
|
|
||||||
|
|
||||||
#include <cppwinrt_utils.h>
|
|
||||||
@ -107,16 +107,6 @@
|
|||||||
</alwaysEnabledBrandingTokens>
|
</alwaysEnabledBrandingTokens>
|
||||||
</feature>
|
</feature>
|
||||||
|
|
||||||
<feature>
|
|
||||||
<name>Feature_AzureConnectionInProc</name>
|
|
||||||
<description>Host the AzureConnection inside Terminal rather than via TerminalAzBridge</description>
|
|
||||||
<id>4661</id>
|
|
||||||
<stage>AlwaysDisabled</stage>
|
|
||||||
<alwaysEnabledBrandingTokens>
|
|
||||||
<brandingToken>Dev</brandingToken>
|
|
||||||
</alwaysEnabledBrandingTokens>
|
|
||||||
</feature>
|
|
||||||
|
|
||||||
<feature>
|
<feature>
|
||||||
<name>Feature_ShellCompletions</name>
|
<name>Feature_ShellCompletions</name>
|
||||||
<description>An experimental escape sequence for client applications to request the Terminal display a list of suggestions.</description>
|
<description>An experimental escape sequence for client applications to request the Terminal display a list of suggestions.</description>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user