本文整理汇总了C#中Solution.GetAdditionalDocument方法的典型用法代码示例。如果您正苦于以下问题:C# Solution.GetAdditionalDocument方法的具体用法?C# Solution.GetAdditionalDocument怎么用?C# Solution.GetAdditionalDocument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Solution
的用法示例。
在下文中一共展示了Solution.GetAdditionalDocument方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetSingleChangedAdditionalDocument
public static TextDocument GetSingleChangedAdditionalDocument(Solution oldSolution, Solution newSolution)
{
var projectDifferences = GetSingleChangedProjectChanges(oldSolution, newSolution);
var documentId = projectDifferences.GetChangedAdditionalDocuments().Single();
return newSolution.GetAdditionalDocument(documentId);
}
示例2: GetSolutionPreviews
public SolutionPreviewResult GetSolutionPreviews(Solution oldSolution, Solution newSolution, double zoomLevel, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
// Note: The order in which previews are added to the below list is significant.
// Preview for a changed document is preferred over preview for changed references and so on.
var previewItems = new List<SolutionPreviewItem>();
SolutionChangeSummary changeSummary = null;
if (newSolution != null)
{
var solutionChanges = newSolution.GetChanges(oldSolution);
foreach (var projectChanges in solutionChanges.GetProjectChanges())
{
cancellationToken.ThrowIfCancellationRequested();
var projectId = projectChanges.ProjectId;
var oldProject = projectChanges.OldProject;
var newProject = projectChanges.NewProject;
foreach (var documentId in projectChanges.GetChangedDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(documentId.ProjectId, documentId, c =>
CreateChangedDocumentPreviewViewAsync(oldSolution.GetDocument(documentId), newSolution.GetDocument(documentId), zoomLevel, c)));
}
foreach (var documentId in projectChanges.GetAddedDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(documentId.ProjectId, documentId, c =>
CreateAddedDocumentPreviewViewAsync(newSolution.GetDocument(documentId), zoomLevel, c)));
}
foreach (var documentId in projectChanges.GetRemovedDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, documentId, c =>
CreateRemovedDocumentPreviewViewAsync(oldSolution.GetDocument(documentId), zoomLevel, c)));
}
foreach (var documentId in projectChanges.GetChangedAdditionalDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(documentId.ProjectId, documentId, c =>
CreateChangedAdditionalDocumentPreviewViewAsync(oldSolution.GetAdditionalDocument(documentId), newSolution.GetAdditionalDocument(documentId), zoomLevel, c)));
}
foreach (var documentId in projectChanges.GetAddedAdditionalDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(documentId.ProjectId, documentId, c =>
CreateAddedAdditionalDocumentPreviewViewAsync(newSolution.GetAdditionalDocument(documentId), zoomLevel, c)));
}
foreach (var documentId in projectChanges.GetRemovedAdditionalDocuments())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, documentId, c =>
CreateRemovedAdditionalDocumentPreviewViewAsync(oldSolution.GetAdditionalDocument(documentId), zoomLevel, c)));
}
foreach (var metadataReference in projectChanges.GetAddedMetadataReferences())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, null,
string.Format(EditorFeaturesResources.Adding_reference_0_to_1, metadataReference.Display, oldProject.Name)));
}
foreach (var metadataReference in projectChanges.GetRemovedMetadataReferences())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, null,
string.Format(EditorFeaturesResources.Removing_reference_0_from_1, metadataReference.Display, oldProject.Name)));
}
foreach (var projectReference in projectChanges.GetAddedProjectReferences())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, null,
string.Format(EditorFeaturesResources.Adding_reference_0_to_1, newSolution.GetProject(projectReference.ProjectId).Name, oldProject.Name)));
}
foreach (var projectReference in projectChanges.GetRemovedProjectReferences())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, null,
string.Format(EditorFeaturesResources.Removing_reference_0_from_1, oldSolution.GetProject(projectReference.ProjectId).Name, oldProject.Name)));
}
foreach (var analyzer in projectChanges.GetAddedAnalyzerReferences())
{
cancellationToken.ThrowIfCancellationRequested();
previewItems.Add(new SolutionPreviewItem(oldProject.Id, null,
string.Format(EditorFeaturesResources.Adding_analyzer_reference_0_to_1, analyzer.Display, oldProject.Name)));
}
foreach (var analyzer in projectChanges.GetRemovedAnalyzerReferences())
{
cancellationToken.ThrowIfCancellationRequested();
//.........这里部分代码省略.........
示例3: ProcessOperationsAsync
private static async Task<Solution> ProcessOperationsAsync(
Workspace workspace, Document fromDocument, string title, Solution oldSolution, Solution updatedSolution, List<CodeActionOperation> operationsList,
IProgressTracker progressTracker, CancellationToken cancellationToken)
{
foreach (var operation in operationsList)
{
var applyChanges = operation as ApplyChangesOperation;
if (applyChanges == null)
{
operation.Apply(workspace, cancellationToken);
continue;
}
// there must be only one ApplyChangesOperation, we will ignore all other ones.
if (updatedSolution == oldSolution)
{
updatedSolution = applyChanges.ChangedSolution;
var projectChanges = updatedSolution.GetChanges(oldSolution).GetProjectChanges();
var changedDocuments = projectChanges.SelectMany(pd => pd.GetChangedDocuments());
var changedAdditionalDocuments = projectChanges.SelectMany(pd => pd.GetChangedAdditionalDocuments());
var changedFiles = changedDocuments.Concat(changedAdditionalDocuments).ToList();
// 0 file changes
if (changedFiles.Count == 0)
{
operation.Apply(workspace, cancellationToken);
continue;
}
// 1 file change
SourceText text = null;
if (changedFiles.Count == 1)
{
if (changedDocuments.Any())
{
// ConfigureAwait(true) so we come back to the same thread as
// we do all application on the UI thread.
text = await oldSolution.GetDocument(changedDocuments.Single()).GetTextAsync(cancellationToken).ConfigureAwait(true);
}
else if (changedAdditionalDocuments.Any())
{
// ConfigureAwait(true) so we come back to the same thread as
// we do all application on the UI thread.
text = await oldSolution.GetAdditionalDocument(changedAdditionalDocuments.Single()).GetTextAsync(cancellationToken).ConfigureAwait(true);
}
}
if (text != null)
{
using (workspace.Services.GetService<ISourceTextUndoService>().RegisterUndoTransaction(text, title))
{
operation.Apply(workspace, cancellationToken);
continue;
}
}
// multiple file changes
using (var undoTransaction = workspace.OpenGlobalUndoTransaction(title))
{
operation.Apply(workspace, progressTracker, cancellationToken);
// link current file in the global undo transaction
if (fromDocument != null)
{
undoTransaction.AddDocument(fromDocument.Id);
}
undoTransaction.Commit();
}
continue;
}
}
return updatedSolution;
}
示例4: TryGetSingleChangedText
private TextDocument TryGetSingleChangedText(
Solution oldSolution, ImmutableArray<CodeActionOperation> operationsList)
{
Debug.Assert(operationsList.Length > 0);
if (operationsList.Length > 1)
{
return null;
}
var applyOperation = operationsList.Single() as ApplyChangesOperation;
if (applyOperation == null)
{
return null;
}
var newSolution = applyOperation.ChangedSolution;
var changes = newSolution.GetChanges(oldSolution);
if (changes.GetAddedProjects().Any() ||
changes.GetRemovedProjects().Any())
{
return null;
}
var projectChanges = changes.GetProjectChanges().ToImmutableArray();
if (projectChanges.Length != 1)
{
return null;
}
var projectChange = projectChanges.Single();
if (projectChange.GetAddedAdditionalDocuments().Any() ||
projectChange.GetAddedAnalyzerReferences().Any() ||
projectChange.GetAddedDocuments().Any() ||
projectChange.GetAddedMetadataReferences().Any() ||
projectChange.GetAddedProjectReferences().Any() ||
projectChange.GetRemovedAdditionalDocuments().Any() ||
projectChange.GetRemovedAnalyzerReferences().Any() ||
projectChange.GetRemovedDocuments().Any() ||
projectChange.GetRemovedMetadataReferences().Any() ||
projectChange.GetRemovedProjectReferences().Any())
{
return null;
}
var changedAdditionalDocuments = projectChange.GetChangedAdditionalDocuments().ToImmutableArray();
var changedDocuments = projectChange.GetChangedDocuments().ToImmutableArray();
if (changedAdditionalDocuments.Length + changedDocuments.Length != 1)
{
return null;
}
return changedDocuments.Length == 1
? oldSolution.GetDocument(changedDocuments[0])
: oldSolution.GetAdditionalDocument(changedAdditionalDocuments[0]);
}
示例5: ProcessOperations
private static Solution ProcessOperations(Workspace workspace, Document fromDocument, string title, Solution oldSolution, Solution updatedSolution, List<CodeActionOperation> operationsList, CancellationToken cancellationToken)
{
foreach (var operation in operationsList)
{
var applyChanges = operation as ApplyChangesOperation;
if (applyChanges == null)
{
operation.Apply(workspace, cancellationToken);
continue;
}
// there must be only one ApplyChangesOperation, we will ignore all other ones.
if (updatedSolution == oldSolution)
{
updatedSolution = applyChanges.ChangedSolution;
var projectChanges = updatedSolution.GetChanges(oldSolution).GetProjectChanges();
var changedDocuments = projectChanges.SelectMany(pd => pd.GetChangedDocuments());
var changedAdditionalDocuments = projectChanges.SelectMany(pd => pd.GetChangedAdditionalDocuments());
var changedFiles = changedDocuments.Concat(changedAdditionalDocuments);
// 0 file changes
if (!changedFiles.Any())
{
operation.Apply(workspace, cancellationToken);
continue;
}
// 1 file change
SourceText text = null;
if (!changedFiles.Skip(1).Any())
{
if (changedDocuments.Any())
{
text = oldSolution.GetDocument(changedDocuments.Single()).GetTextAsync(cancellationToken).WaitAndGetResult(cancellationToken);
}
else if (changedAdditionalDocuments.Any())
{
text = oldSolution.GetAdditionalDocument(changedAdditionalDocuments.Single()).GetTextAsync(cancellationToken).WaitAndGetResult(cancellationToken);
}
}
if (text != null)
{
using (workspace.Services.GetService<ISourceTextUndoService>().RegisterUndoTransaction(text, title))
{
operation.Apply(workspace, cancellationToken);
continue;
}
}
// multiple file changes
using (var undoTransaction = workspace.OpenGlobalUndoTransaction(title))
{
operation.Apply(workspace, cancellationToken);
// link current file in the global undo transaction
if (fromDocument != null)
{
undoTransaction.AddDocument(fromDocument.Id);
}
undoTransaction.Commit();
}
continue;
}
}
return updatedSolution;
}