本文整理汇总了C#中Microsoft.CodeAnalysis.Document.GetTextVersionAsync方法的典型用法代码示例。如果您正苦于以下问题:C# Document.GetTextVersionAsync方法的具体用法?C# Document.GetTextVersionAsync怎么用?C# Document.GetTextVersionAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.Document
的用法示例。
在下文中一共展示了Document.GetTextVersionAsync方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AnalyzeDocumentAsync
public async System.Threading.Tasks.Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, CancellationToken cancellationToken)
{
Contract.ThrowIfFalse(document.IsFromPrimaryBranch());
cancellationToken.ThrowIfCancellationRequested();
if (!_optionService.GetOption(InternalFeatureOnOffOptions.DesignerAttributes))
{
return;
}
// use tree version so that things like compiler option changes are considered
var textVersion = await document.GetTextVersionAsync(cancellationToken).ConfigureAwait(false);
var projectVersion = await document.Project.GetDependentVersionAsync(cancellationToken).ConfigureAwait(false);
var semanticVersion = await document.Project.GetDependentSemanticVersionAsync(cancellationToken).ConfigureAwait(false);
var existingData = await _state.TryGetExistingDataAsync(document, cancellationToken).ConfigureAwait(false);
if (existingData != null)
{
// check whether we can use the data as it is (can happen when re-using persisted data from previous VS session)
if (CheckVersions(document, textVersion, projectVersion, semanticVersion, existingData))
{
var workspace = document.Project.Solution.Workspace as VisualStudioWorkspaceImpl;
RegisterDesignerAttribute(workspace, document.Id, existingData.DesignerAttributeArgument);
return;
}
}
var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
// Delay getting any of these until we need them, but hold on to them once we have them.
string designerAttributeArgument = null;
Compilation compilation = null;
INamedTypeSymbol designerAttribute = null;
SemanticModel model = null;
// get type defined in current tree
foreach (var typeNode in GetAllTopLevelTypeDefined(root))
{
cancellationToken.ThrowIfCancellationRequested();
if (HasAttributesOrBaseTypeOrIsPartial(typeNode))
{
if (designerAttribute == null)
{
if (compilation == null)
{
compilation = await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(false);
}
designerAttribute = compilation.DesignerCategoryAttributeType();
if (designerAttribute == null)
{
// The DesignerCategoryAttribute doesn't exist.
InvalidateDocument(document);
return;
}
}
if (model == null)
{
model = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
}
var definedType = model.GetDeclaredSymbol(typeNode, cancellationToken) as INamedTypeSymbol;
if (definedType == null)
{
continue;
}
// walk up type chain
foreach (var type in definedType.GetBaseTypesAndThis())
{
cancellationToken.ThrowIfCancellationRequested();
// if it has designer attribute, set it
var attribute = type.GetAttributes().Where(d => designerAttribute.Equals(d.AttributeClass)).FirstOrDefault();
if (attribute != null && attribute.ConstructorArguments.Length == 1)
{
designerAttributeArgument = GetArgumentString(attribute.ConstructorArguments[0]);
await RegisterDesignerAttributeAndSaveStateAsync(document, textVersion, semanticVersion, designerAttributeArgument, existingData, cancellationToken).ConfigureAwait(false);
return;
}
}
}
// check only first type
if (ProcessOnlyFirstTypeDefined())
{
break;
}
}
await RegisterDesignerAttributeAndSaveStateAsync(document, textVersion, semanticVersion, designerAttributeArgument, existingData, cancellationToken).ConfigureAwait(false);
}
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:96,代码来源:AbstractDesignerAttributeIncrementalAnalyzer.cs
示例2: DocumentChangedAsync
private async Task DocumentChangedAsync(Document oldDocument, Document newDocument)
{
var oldTextVersion = await oldDocument.GetTextVersionAsync(CancellationToken.None).ConfigureAwait(false);
var newTextVersion = await newDocument.GetTextVersionAsync(CancellationToken.None).ConfigureAwait(false);
if (oldTextVersion != newTextVersion)
{
UpdateClassAndMemberVersions();
}
}
示例3: DocumentChangedAsync
private async Task DocumentChangedAsync(Document oldDocument, Document newDocument)
{
try
{
var oldTextVersion = await oldDocument.GetTextVersionAsync(CancellationToken.None).ConfigureAwait(false);
var newTextVersion = await newDocument.GetTextVersionAsync(CancellationToken.None).ConfigureAwait(false);
if (oldTextVersion != newTextVersion)
{
UpdateClassAndMemberVersions();
}
}
catch (Exception e) when (FatalError.Report(e))
{
// make it crash VS on any exception
}
}