Есть ли способ добавить новый проект в решение из CodeAction
класса?
Контекст:
У меня есть CodeRefactoringProvider
, который генерирует некоторый код, и я хочу поместить этот код в новый проект.
У меня есть CodeRefactoringProvider
и CodeAction
, реализованные для этой цели, и я пытаюсь добавить проект из экземпляра Solution, который я получаю из CodeRefactoringContext
, например
context.RegisterRefactoring(
CodeAction.Create("Create New Project",
(c)=>
Task.Run(
()=>
{
var proj = context.Document.Project.Solution.AddProject("NewProject", "NewProject", "C#");
return proj.Solution;
})
));
Это дает мне
System.AggregateException : One or more errors occurred. ---> Adding projects is not supported.
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Editor.Implementation.Suggestions.SuggestedAction.InvokeWorker(Func`1 getFromDocument,IProgressTracker progressTracker,CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Editor.Implementation.Suggestions.SuggestedAction.<>c__DisplayClass18_0.<InvokeCore>b__0()
at Microsoft.CodeAnalysis.Extensions.IExtensionManagerExtensions.PerformAction(IExtensionManager extensionManager,Object extension,Action action)
---> (Inner Exception #0) System.NotSupportedException : Adding projects is not supported.
at Microsoft.CodeAnalysis.Workspace.CheckAllowedSolutionChanges(SolutionChanges solutionChanges)
at Microsoft.CodeAnalysis.Workspace.TryApplyChanges(Solution newSolution,IProgressTracker progressTracker)
at Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioWorkspaceImpl.TryApplyChanges(Solution newSolution,IProgressTracker progressTracker)
at Microsoft.CodeAnalysis.CodeActions.ApplyChangesOperation.TryApply(Workspace workspace,IProgressTracker progressTracker,CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Editor.Implementation.CodeActions.CodeActionEditHandlerService.ProcessOperations(Workspace workspace,ImmutableArray`1 operations,IProgressTracker progressTracker,CancellationToken cancellationToken)
at async Microsoft.CodeAnalysis.Editor.Implementation.CodeActions.CodeActionEditHandlerService.ApplyAsync(<Unknown Parameters>)<---
Я пытался добавить проект, используя сервис IVsSolution
, но получил ошибку:
The operation could not be completed. A null reference pointer was passed to the stub.
Итак, как я могу создать новый проект в решении?