Автоматическое форматирование Visual Studio/C#. Могу ли я контролировать новую строку после атрибутов

Visual Studio продолжает делать это:

[DataContract] 
public class MyContract 
{
    [DataMember]
    public bool MyBool { get; set; }
    [DataMember]
    public string MyString { get; set; } 
}

Я хотел бы это:

[DataContract] 
public class MyContract 
{
    [DataMember] public bool MyBool { get; set; }
    [DataMember] public string MyString { get; set; } 
}

Ничего страшного, если «публичный класс MyContract» находится в той же строке, что и [DataContract].

В Visual Studio, похоже, есть много подробных параметров автоформатирования, но я не могу найти никаких новых строк после атрибутов. Я что-то упустил здесь? Или он просто недоступен.

РЕДАКТИРОВАТЬ: По крайней мере, мне бы хотелось, чтобы опция форматирования «не меняла то, что я ввел», а не опция «всегда вставлять» или «всегда удалять» новую строку. Очень раздражает то, что он продолжает форматировать мой код после того, как я набираю.


person Clyde    schedule 10.12.2009    source источник
comment
Я тоже столкнулся с этой неприятностью. VS2013 вышел, и кажется, что с этим ничего не поделаешь, разве что я что-то упустил, не так ли? - Вы нашли лучшее решение, чем просто Ctrl-Z'ing?   -  person vexe    schedule 07.01.2014
comment
То же самое для VS 2015 @vexe.   -  person Zev Spitz    schedule 12.09.2015
comment
developercommunity.visualstudio.com/t/   -  person Ucho    schedule 11.07.2021


Ответы (5)


Что я обычно делаю, так это нажимаю Ctrl-Z в тот самый момент, когда автоформат прыгает туда, где мне это не нравится.

То есть, на заключительной похвале, которая форматирует весь класс или метод. Введите заключительную похвалу, посмотрите, как она изменится так, как вам не нравится, а затем нажмите Ctrl-Z. (Я знаю, что вы искали реальный вариант, я не знаю, существует ли он).

person Abel    schedule 10.12.2009
comment
ой! это на самом деле не так уж и плохо. Я всегда предполагал, что это удалит мой последний фактический ввод, но вы, очевидно, поняли, что это не так. Если окажется, что нет возможности выполнить реальную настройку, это разумный обходной путь. - person Clyde; 10.12.2009
comment
Разные программы действуют здесь по-разному. Например, OpenOffice (личный фаворит) удаляет как автоформатирование , так и последнего ввода, что доставляет неудобства. В Eclipse это зависит от плагина (часто полностью разрушающего список отмены). Большинство продуктов Microsoft (Visual Studio, Office) добавляют его как дополнительную запись в список отмены. Как только вы привыкнете к этому, это действительно не так уж плохо ;-) - person Abel; 10.12.2009

Не уверен, что это работает для атрибутов, но посмотрите под Tools -> Options -> Text Editor -> C# -> Formatting -> Wrapping -> Leave block on single line или Leave statements and member declarations on the same line.

person Agent_9191    schedule 10.12.2009
comment
Нет... уже проверили. Они не применяются к атрибутам - person Clyde; 10.12.2009

ReSharper может это сделать. Он имеет опции для:

  • Поместите атрибут типа на той же строке
  • Поместите атрибут метода в ту же строку
  • Поместите атрибут свойства/индексатора/события в одну строку (это тот, который вы хотите)
  • Поместите атрибут поля в ту же строку

Это стоит несколько долларов, но если вы так же одержимы, как я, это стоит каждой копейки. ;)

Я также переназначаю Ctrl+K, Ctrl+D на код молчаливого форматирования ReSharper, чтобы испытать блаженство форматирования.

person Mike    schedule 18.11.2011
comment
Это не меняет его форматирование даже после того, как я установил его на ту же строку. - person Louis Hong; 11.05.2015
comment
Мне немного неловко из-за отрицательного голоса, но, честно говоря, я не фанат этих ответов о покупке этого продукта. Вопрос конкретно касается Visual Studio, а не Resharper. Я использовал Resharper в прошлом и знаю, что это хороший продукт, но сейчас у меня его нет, и я не получу его в ближайшее время. Моя проблема сейчас - VS. - person Kenneth K.; 27.10.2015

Лучше всего для меня работало отключение автоматического форматирования ; и вставить. В любом случае, в настоящее время я вряд ли когда-либо захочу автоматическое форматирование. Это позволяет вам вводить атрибуты и перемещать их без надоедливых помех.

Параметры > Текстовый редактор > C# > Форматирование > Общие

Скриншот настроек

person mkatic    schedule 30.03.2017

Да, Ctrl+E, D твой друг. Вы можете оптимизировать форматирование в Text editor options

person Jay Zeng    schedule 10.12.2009