Подтвердить что ты не робот

Можно ли скрыть смайлик в финале Visual Studio 2015?

В Visual Studio 2015 RC был обратный смайлик в правом верхнем углу главного окна.

К сожалению, он все еще присутствует в финальной версии Visual Studio 2015:

enter image description here

Я просмотрел все параметры и настройки и не нашел способа скрыть этот смайлик.

Мой вопрос:

Любая опция или другой (реестр и т.д.) взломать, чтобы удалить смайлик?

Обновление 2015-12-01:

Вчера было выпущено обновление 1 для Visual Studio.

Пока я не вижу возможности скрывать смайлик, они, по крайней мере, предоставили для него менее отвлекающий значок:

введите описание изображения здесь

4b9b3361

Ответ 1

Изменить:

Обновление Visual Studio 2015 1 изменяет значок обратной связи на заниженный черно-белый, поэтому больше не смайлик! Он не упоминается в примечаниях к выпуску.

введите описание изображения здесь

Оригинальный ответ:

Как и в ответе OP, этот значок указан в этом разделе реестра:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MainWindowFrameControls {F66FBC48-9AE4-41DC-B1AF-0D64F0F54A07}

если вы удаляете ключ, Visual Studio воссоздает его, но если вы аннулируете значение "Пакет" в разделе реестра и перезапускаете Visual Studio, значок смайлика отсутствует:

введите описание изображения здесь

Однако при установке обновления Visual Studio (например, SSDT, Resharper) установщик восстанавливает значение пакета, а смайлик возвращается. Поэтому я создал файл реестра, например, для запуска, когда снова появится смайлик:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MainWindowFrameControls\{F66FBC48-9AE4-41DC-B1AF-0D64F0F54A07}]
@="Feedback Button"
"Package"="{00000000-AA51-43B1-97EE-509A33B681F3}"
"DisplayName"="#1001"
"ViewFactory"="{060EAB95-139E-407D-BEDC-CC2B7A9B39D4}"
"ViewId"=dword:00000064
"Alignment"="TitleBarRight"
"Sort"=dword:00000064
"FullScreenAlignment"="MenuBarRight"
"FullScreenSort"=dword:00000064

Это, похоже, не влияет на время запуска или стабильность, но нет никаких гарантий, изменения в реестре плохие ммм и т.д.

Ответ 2

Благодаря подсказке Jehof для Visual Studio 2013, я смог разрешите это:

Фактически это помогло удалить следующий ключ реестра.

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MainWindowFrameControls\{F66FBC48-9AE4-41DC-B1AF-0D64F0F54A07}

(Обратите внимание на 14.0 вместо 12.0 в связанном сообщении в блоге)

enter image description here

После перезапуска Visual Studio кнопка "Обратная связь" исчезла.

Обновление через день

Внезапно снова появится значок "Обратная связь". Кроме того, раздел реестра тоже здесь.

Как это возможно?

Кажется, смайлик воскресает со своей могилы. Я действительно испугался сейчас...

Ответ 3

Следуя советам в этом потоке, я изменил также раздел реестра, и он работал сначала, но VS2015 через некоторое время продолжает восстанавливать ключ до его первоначального значения.

Чтобы исправить это, я добавил ярлык VS2015 на панели задач, а затем Shift + щелкните правой кнопкой мыши, чтобы получить доступ к "Свойствам". Замените целевой путь для ярлыка, указывающего на файл devenv.exe, с собственным локальным файлом c:\tools\vs .bat.

Кроме того, я изменил Run на "Minimized" в свойствах ярлыка. Vs.bat выглядит следующим образом:

@echo off
reg ADD HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MainWindowFrameControls\{F66FBC48-9AE4-41DC-B1AF-0D64F0F54A07} /v Package /t REG_SZ /d {00000000-AA51-43B1-97EE-509A33B681F3} /f 2> nul
start /B devenv.exe

Это гарантирует, что ключ перезаписывается каждый раз, когда я запускаю VS2015 через Shourtcut панели задач. Я нашел, что это надежно работает для меня.

Если вы когда-либо запускаете VS без этого (например, при перезапуске VS), вам может потребоваться выполнить вышеуказанное дважды.

Ответ 4

Я удалил значение ключа выравнивания (просто оставил его пустым). Значок исчез до сих пор, но я еще не установил никаких обновлений. Будет продолжать публикацию.

UPDATE. Восстановление VS2015 не только восстановило эту кнопку, но и изменило способ ее настройки: теперь мой метод не работает. Более того, удаление раздела реестра больше не помогает. Написал MS через этот полезный инструмент.

Ответ 5

Расширение Visual Commander позволяет создавать расширения, которые могут подключаться к событиям. Один приведенный пример скрывает значок обратной связи.

// References: System.Xaml 
public class E : VisualCommanderExt.IExtension
{
    public void SetSite(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        timer = new System.Windows.Threading.DispatcherTimer();
        timer.Interval = System.TimeSpan.FromMilliseconds(1000);
        timer.Tick += OnTimer;
        timer.Start();
    }
    public void Close()
    {
        timer.Stop();
    }
    private void OnTimer(System.Object o, System.EventArgs a)
    {
        try
        {
            if (HideSignIn() && HideFeedback())
                ;
        }
        catch (System.Exception e)
        {
        }
    }
    private bool HideSignIn()
    {
        System.Windows.FrameworkElement e = 
            FindElement(System.Windows.Application.Current.MainWindow, 
                "PART_MenuBarFrameControlContainer");
        if (e != null)
        {
            e.Visibility = System.Windows.Visibility.Collapsed;
            return true;
        }
        return false;
    }
    private bool HideFeedback()
    {   
        System.Windows.FrameworkElement e = 
            FindElement(System.Windows.Application.Current.MainWindow, 
                "PART_TitleBarFrameControlContainer");
        if (e != null)
        {
            System.Windows.DependencyObject o1 = 
                System.Windows.Media.VisualTreeHelper.GetChild(e, 0);
            System.Windows.DependencyObject o2 = 
                System.Windows.Media.VisualTreeHelper.GetChild(o1, 0);
            System.Windows.DependencyObject o3 = 
                System.Windows.Media.VisualTreeHelper.GetChild(o2, 0);
            if (System.Windows.Media.VisualTreeHelper.GetChildrenCount(o3) == 3)
            {
                System.Windows.DependencyObject o4 = 
                    System.Windows.Media.VisualTreeHelper.GetChild(o3, 1);
                (o4 as System.Windows.FrameworkElement).Visibility = 
                    System.Windows.Visibility.Collapsed;
                return true;
            }
        }
        return false;
    }
    private System.Windows.FrameworkElement FindElement(System.Windows.Media.Visual v, string name)
    {
        if (v == null)
            return null;
        for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(v); ++i)
        {
            System.Windows.Media.Visual child = 
                System.Windows.Media.VisualTreeHelper.GetChild(v, i) as
                    System.Windows.Media.Visual;
            if (child != null)
            {
                System.Windows.FrameworkElement e = 
                    child as System.Windows.FrameworkElement;
                if (e != null && e.Name == name)
                    return e;
            }
            System.Windows.FrameworkElement result = FindElement(child, name);
            if (result != null)
                return result;
        }
        return null;
    }
    private System.Windows.Threading.DispatcherTimer timer;
}

Хотя, сравнивая этот пример с hide publish button, кажется, функция OnTimer должна остановить таймер после того, как значки были скрыты.

private void OnTimer(System.Object o, System.EventArgs a)
{
    try
    {
        if (HideSignIn() && HideFeedback())
            timer.Stop();

    }
    catch (System.Exception e)
    {
    }
}

Ответ 6

Эта строка PowerShell удаляет значок до тех пор, пока не будет установлено обновление:

 Set-ItemProperty -Path "HKCU:\Software\Microsoft\VisualStudio\14.0_Config\MainWindowFrameControls\{F66FBC48-9AE4-41DC-B1AF-0D64F0F54A07}" Package "{00000000-AA51-43B1-97EE-509A33B681F3}"