Скорее всего (это предположение, так как вы не включили в вопрос свою конфигурацию launchd), вы не передаете супервизору аргумент -n
, чтобы предотвратить самодемонизацию из конфигурации launchd.
Когда основной PID программы завершается, launchd рассматривает оставшиеся процессы, связанные с сиротами, и очищает их.
Чтобы избежать этого, никогда не настраивать программное обеспечение, работающее в системе наблюдения, для самостоятельного демонизации, если только эта система наблюдения явно не поддерживает отслеживание дочерних элементов и не настроена на это.
Подробно остановиться на ответе Cherian:
NArrange позволит Вам делать большое форматирование кода. Это - открытый исходный код, и источник доступен на их сайте, таким образом, Вы могли потенциально интегрироваться и redistbute это с Вашим инструментом.
Необходимо только нуждаться в dll's и просто посмотреть на exe о том, как назвать форматирование. Это также создаст резервное копирование форматированного кода. Это - действительно хороший инструмент, если это соответствует Вашим потребностям.
Смотрите на Narrange. Необходимо будет, вероятно, автоматизировать эти вещи как часть сборки.
Не уверенный, если это отвечает всем Вашим требованиям все же.
Заключить в кавычки:
NArrange является программой изящного форматирования кода.NET, которая автоматически организует участников кода и элементы в классах.NET.
Можно использовать CodeDOM и CSharpCodeProvider. Это - все в пространствах имен Microsoft. До-диез и Система. CodeDom.
Ее пример свойства:
StringWriter writer = new StringWriter();
CSharpCodeProvider provider = new CSharpCodeProvider();
CodeMemberProperty property = new CodeMemberProperty();
property.Type = new CodeTypeReference(typeof(int));
property.Name = "MeaningOfLifeUniverseAndEverything";
property.GetStatements.Add(new CodeMethodReturnStatement(new CodePrimitiveExpression(42)));
provider.GenerateCodeFromMember(property, writer, null);
Console.WriteLine(writer.GetStringBuilder().ToString());
Этот код генерирует:
private int MeaningOfLifeUniverseAndEverything {
get {
return 42;
}
}
CodeDOM является довольно болтливым способом сгенерировать код. Хорошая вещь состоит в том, что можно генерировать несколько языков. Возможно, можно ли найти Erlang.NET CodeProvider?
Вы смогли делать несколько ярлыков при помощи CodeSnippetExpression.
Только если Вы выполняете генератор кода как дополнение VS - каждый разработчик будет иметь различные настройки.
Вот то, как сделать это от контекста макроса или дополнения:
var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.8.0");
dte.ExecuteCommand("File.OpenFile", filename);
dte.ExecuteCommand("Edit.FormatDocument", filename);
dte.ActiveDocument.Close(vsSaveChanges.vsSaveChangesYes);
Предупреждение: Как @Greg Hurlman говорит, вывод будет варьироваться в зависимости от текущих опций пользователя.
Править:
к сожалению, Ваш метод требует, чтобы у меня был экземпляр VS, работающего вместе с моим приложением winforms. Можно ли думать о способе создать экземпляр VS из моего приложения (если это даже возможно)?
Я думаю, что могло бы быть возможно сделать из Вашего Win. Приложение форм. Однако необходимо будет установить Visual Studio на машине, выполняющей код.
Попробуйте это:
var dte = (EnvDTE80.DTE2)Microsoft.VisualBasic.Interaction.CreateObject("VisualStudio.DTE.8.0", "");
dte.ExecuteCommand("File.OpenFile", filename);
dte.ExecuteCommand("Edit.FormatDocument", filename);
dte.ActiveDocument.Close(vsSaveChanges.vsSaveChangesYes);
Следует иметь в виду необходимость в ссылках на блок EnvDTE80.dll.