本文整理汇总了C#中Workspace.CreateSolution方法的典型用法代码示例。如果您正苦于以下问题:C# Workspace.CreateSolution方法的具体用法?C# Workspace.CreateSolution怎么用?C# Workspace.CreateSolution使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workspace
的用法示例。
在下文中一共展示了Workspace.CreateSolution方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateEngineAsync
public static async Task<ISymbolSearchUpdateEngine> CreateEngineAsync(
Workspace workspace, ISymbolSearchLogService logService, CancellationToken cancellationToken)
{
var outOfProcessAllowed = workspace.Options.GetOption(SymbolSearchOptions.OutOfProcessAllowed);
if (outOfProcessAllowed)
{
var client = await workspace.GetRemoteHostClientAsync(cancellationToken).ConfigureAwait(false);
if (client != null)
{
var emptySolution = workspace.CreateSolution(workspace.CurrentSolution.Id);
// We create a single session and use it for the entire lifetime of this process.
// That single session will be used to do all communication with the remote process.
// This is because each session will cause a new instance of the RemoteSymbolSearchUpdateEngine
// to be created on the remote side. We only want one instance of that type. The
// alternative is to make that type static variable on the remote side. But that's
// much less clean and would make some of the state management much more complex.
var session = await client.CreateServiceSessionAsync(
WellKnownServiceHubServices.RemoteSymbolSearchUpdateEngine,
emptySolution, logService, cancellationToken).ConfigureAwait(false);
return new RemoteUpdateEngine(session);
}
}
// Couldn't go out of proc. Just do everything inside the current process.
return new SymbolSearchUpdateEngine(logService);
}
示例2: ConnectToWorkspace
private void ConnectToWorkspace(Workspace workspace)
{
ResetLastParsedDocument();
_workspace = workspace;
if (_workspace != null)
{
_isClassificationOnlyWorkspace = false;
_workspace.WorkspaceChanged += this.OnWorkspaceChanged;
_workspace.DocumentOpened += this.OnDocumentOpened;
_workspace.DocumentActiveContextChanged += this.OnDocumentActiveContextChanged;
var textContainer = _subjectBuffer.AsTextContainer();
var documentId = _workspace.GetDocumentIdInCurrentContext(textContainer);
if (documentId != null)
{
var document = workspace.CurrentSolution.GetDocument(documentId);
if (document != null)
{
EnqueueParseSnapshotTask(document);
return;
}
}
}
else
{
// This buffer isn't being tracked by any workspace. In Visual Studio, this
// can happen if it is not in the Running Document Table. We'll try to do
// basic syntax classification based on the initial state of the snapshot.
// Changes to the buffer are not observed, but initial tags will track forward.
_isClassificationOnlyWorkspace = true;
if (_languageName != null)
{
_workspace = new AdhocWorkspace();
var solution = _workspace.CreateSolution(SolutionId.CreateNewId());
var project = solution.AddProject(name: string.Empty, assemblyName: string.Empty, language: _languageName);
var parsedSnapshot = _subjectBuffer.CurrentSnapshot;
var document = project.AddDocument(name: string.Empty, text: _subjectBuffer.CurrentSnapshot.AsText());
EnqueueParseSnapshotTask(document, parsedSnapshot);
return;
}
}
}