Articles of roslyn

Por que o valor de hash inicial na implementação de GetHashCode () gerado para uma class anônima depende dos nomes de propriedades?

Ao gerar a implementação de GetHashCode() para uma class anônima, Roslyn calcula o valor de hash inicial com base nos nomes das propriedades. Por exemplo, a class gerada para var x = new { Int = 42, Text = “42” }; vai ter o seguinte método GetHashCode() : public override in GetHashCode() { int hash […]

Como faço para replace uma variável de seqüência de caracteres por um var no Roslyn?

Para declarações locais como: string a = string.Empty; Como posso escrever um diagnóstico para alterá-lo para: var a = string.Empty;

Por que o VS 2017 sugere replace uma propriedade por um método?

Percebi que todas as propriedades no Visual Studio 2017 têm uma ação rápida que sugere substituí-lo por um método. Isso significa que as propriedades não são a maneira recomendada de definir e obter o valor dos campos? A Microsoft pretende descontinuá-la no futuro? Ou existem ganhos que poderiam ser obtidos usando methods sobre propriedades para […]

Referências em arquivos Roslyn .rsp

Eu vejo no CSharpInteractive.rsp você pode adicionar uma referência a uma DLL no GAC usando / r: Como você adiciona referências às suas próprias DLLs? Eu tentei System.Reflection.Assembly.LoadFrom, não falhou, mas não funcionou. Eu estou tentando adicionar uma referência à minha DLL que tem methods de extensão. Se eu tentar adicionar o código para o […]

Documentos de projeto de carga Roslyn falhando

Em uma solução do Visual Studio Extension (VSIX), estou usando o Roslyn para carregar um projeto específico da minha solução atual: Project myProject = this.CurrentComponentModel.GetService() .CurrentSolution.Projects .FirstOrDefault(p => p.Name == “MyProject”) O projetor myProject é definitivamente carregado, mas na inspeção eu vejo que: myProject.HasDocuments == false myProject.Documents is Empty E, no entanto, no Visual Studio, […]

Como habilitar o script C # no VS 2015?

Como configuro o VS 2015 para habilitar os resources de script C # da Roslyn? Eu tentei instalar vários pacotes Nuget, incluindo as versões 1.0 e 1.1.0-beta1 do Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.Scripting.CSharp, etc., mas não consigo obter nenhum dos exemplos que ve encontrado on-line para o trabalho. Estou recebendo erros de “tipo não encontrado”, ou seja, var […]

Como encontrar o SyntaxNode para um método Symbol em um CompilationUnit?

Eu adicionei um monte de nós a uma unidade de compilation, e agora eu gostaria de procurar o nó de syntax correspondente a um determinado símbolo: var compilation = Compilation.Create(“HelloWorld”) .AddSyntaxTrees(SyntaxTree.ParseCompilationUnit(“”)); ISymbol symbol = // some arbitrary symbol, eg a method whose syntax node I had compilation.GlobalNamespace.GetNamespaceMembers().First(); SyntaxToken token = ???; // how do I […]

Quando usar SemanticModel.GetSymbolInfo e quando SemanticModel.GetDeclaredSymbol

Em alguns casos, quando estou tentando obter o ISymbol para meu nó de syntax, estou com falha (ficando nulo) ao usar SemanticModel.GetSymbolInfo, mas tenho êxito ao usar SemanticModel.GetDeclaredSymbol. Eu anexei um exemplo abaixo. Então, minha pergunta é quando usar cada um dos methods para obter o modelo semântico? public class Class1 { public System.String MyString […]

Roslyn não encontrando todas as referências

Estou usando o Roslyn para rewrite alguns methods usados ​​em toda a solução. Consegui encontrar e corrigir muitos casos. No entanto, não está encontrando todas as referências. Muitos mais aparecem no Visual Studio com CodeLens ou usando “Localizar todas as referências”. A solução é compilada sem erros. As referências que não estão encontrando parecem ser […]

Como adicionar projeto existente para a solução c # com roslyn?

Eu quero adicionar um projeto existente para a minha solução c #. Eu usei TryApplyChanges e ele retorna true, mas não salva as alterações na solução real. Eu usei Microsoft.CodeAnalysis. * Versão 1.1.1. public void AddProject (string solutionName) { MSBuildWorkspace ws=MSBuildWorkspace.Create (); ws.OpenSolutionAsync (solutionName); ws.OpenProjectAsync (“ProjectName”); if (ws.TryApplyChanges (ws.CurrentSolution ) {// break point is here […]