Как обновить проект до стиля SDK без изменения целевой платформы?C#

Место общения программистов C#
Anonymous
Как обновить проект до стиля SDK без изменения целевой платформы?

Сообщение Anonymous »

Я использовал помощник по обновлению, и он неплохо справляется со своей задачей, однако я ищу способ сделать это в неинтерактивном режиме, поскольку хочу запустить это через приложение вспомогательной консоли.
Итак, у меня есть такой код:

Код: Выделить всё

WriteLine("Hello, World!");

var pl = new ProjectsLister();
pl.run();

//updateTargetFramework(pl);
//print(pl.findLooseProjects(), (i, p) => $"Loose project: {p} in {p.solution}");

var skipped = new List();

foreach (var tp in pl.all) {
if (tp.Sdk != null || tp.solution != "CADM") continue;
WriteLine("Non SDK project: " + tp);
if (tp.targetFrameworks.Count > 1) {
skipped.Add((tp, "The project targets multiple frameworks which is not supported by `upgrade-assistant` (I assume)."));
continue;
}
Debugger.Break();
//var up = await enter($@"try-convert -p ""{tp.path}""");
var up = await enter($@"upgrade-assistant upgrade ""{tp.path}""" +
" -o feature.sdkstyle" +
" -o Inplace" +
" --non-interactive" +
$" -f {tp.targetFrameworks.toSdk()}"
);
}
Он работает с другими TFM, но инструмент, похоже, не доволен net48, и выдает мне следующий результат:

Код: Выделить всё

Hello, World!
Non SDK project: AppStarting.csproj
upgrade-assistant upgrade "..." -o feature.sdkstyle -o Inplace --non-interactive -f net48
Initializing and loading extensions...
Determining project traits...
Unknown target framework.
Я пробовал разные вещи, но, похоже, мне придется делать это вручную или писать код, который будет имитировать мое взаимодействие с этим инструментом.
PS. Я только что устал https://github.com/hvanbakel/CsprojToVs2017, и это работает, но помощник по обновлению дает гораздо более чистые результаты, поэтому я не могу его проглотить...

Вернуться в «C#»