private ProjectBuilder AddProject(AnalyzerLanguage language, string projectName, bool createExtraEmptyFile) { var languageName = language == AnalyzerLanguage.CSharp ? LanguageNames.CSharp : LanguageNames.VisualBasic; var project = Solution.AddProject(projectName, projectName, languageName); var projectBuilder = ProjectBuilder.FromProject(project) .AddReferences( FrameworkMetadataReference.Mscorlib, FrameworkMetadataReference.System, FrameworkMetadataReference.SystemCore); if (createExtraEmptyFile) { // adding an extra file to the project // this won't trigger any issues, but it keeps a reference to the original ParseOption, so // if an analyzer/codefix changes the language version, Roslyn throws an ArgumentException projectBuilder = projectBuilder .AddSnippet(string.Empty, fileName: "ExtraEmptyFile.g." + language.FileExtension); } return(projectBuilder); }
private ProjectBuilder AddProject(AnalyzerLanguage language, string projectName, bool createExtraEmptyFile) { var languageName = language == AnalyzerLanguage.CSharp ? LanguageNames.CSharp : LanguageNames.VisualBasic; var project = Solution.AddProject(projectName, projectName, languageName); var projectBuilder = ProjectBuilder .FromProject(project) .AddReferences(MetadataReferenceFacade.GetProjectDefaultReferences()); if (language == AnalyzerLanguage.VisualBasic) { // Need a reference to the VB dll to be able to use the Module keyword projectBuilder = projectBuilder.AddReferences(MetadataReferenceFacade.GetMicrosoftVisualBasic()); } if (createExtraEmptyFile) { // adding an extra file to the project // this won't trigger any issues, but it keeps a reference to the original ParseOption, so // if an analyzer/codefix changes the language version, Roslyn throws an ArgumentException projectBuilder = projectBuilder .AddSnippet(string.Empty, fileName: "ExtraEmptyFile.g." + language.FileExtension); } return(projectBuilder); }
private ProjectBuilder AddProject(AnalyzerLanguage language, string projectName, bool createExtraEmptyFile, OutputKind outputKind = OutputKind.DynamicallyLinkedLibrary) { var languageName = language == AnalyzerLanguage.CSharp ? LanguageNames.CSharp : LanguageNames.VisualBasic; var project = Solution.AddProject(projectName, projectName, languageName); var compilationOptions = project.CompilationOptions.WithOutputKind(outputKind); if (languageName == LanguageNames.CSharp) { compilationOptions = ((CSharpCompilationOptions)compilationOptions).WithAllowUnsafe(true); } project = project.WithCompilationOptions(compilationOptions); var projectBuilder = ProjectBuilder .FromProject(project) .AddReferences(MetadataReferenceFacade.GetProjectDefaultReferences()); if (language == AnalyzerLanguage.VisualBasic) { // Need a reference to the VB dll to be able to use the Module keyword projectBuilder = projectBuilder.AddReferences(MetadataReferenceFacade.GetMicrosoftVisualBasic()); } if (createExtraEmptyFile) { // adding an extra file to the project // this won't trigger any issues, but it keeps a reference to the original ParseOption, so // if an analyzer/codefix changes the language version, Roslyn throws an ArgumentException projectBuilder = projectBuilder .AddSnippet(string.Empty, fileName: "ExtraEmptyFile.g." + language.FileExtension); } return(projectBuilder); }