本文整理汇总了C#中Microsoft.CodeAnalysis.Project.GetCompilerOptions方法的典型用法代码示例。如果您正苦于以下问题:C# Project.GetCompilerOptions方法的具体用法?C# Project.GetCompilerOptions怎么用?C# Project.GetCompilerOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.Project
的用法示例。
在下文中一共展示了Project.GetCompilerOptions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CompileProject
public CompilationContext CompileProject(
Project project,
ILibraryKey target,
IEnumerable<IMetadataReference> incomingReferences,
IEnumerable<ISourceReference> incomingSourceReferences,
IList<IMetadataReference> outgoingReferences)
{
var path = project.ProjectDirectory;
var name = project.Name;
var isMainAspect = string.IsNullOrEmpty(target.Aspect);
var isPreprocessAspect = string.Equals(target.Aspect, "preprocess", StringComparison.OrdinalIgnoreCase);
if (!string.IsNullOrEmpty(target.Aspect))
{
name += "!" + target.Aspect;
}
_watcher.WatchProject(path);
_watcher.WatchFile(project.ProjectFilePath);
if (_cacheContextAccessor.Current != null)
{
_cacheContextAccessor.Current.Monitor(new FileWriteTimeCacheDependency(project.ProjectFilePath));
if (isMainAspect)
{
// Monitor the trigger {projectName}_BuildOutputs
var buildOutputsName = project.Name + "_BuildOutputs";
_cacheContextAccessor.Current.Monitor(_namedDependencyProvider.GetNamedDependency(buildOutputsName));
}
}
var exportedReferences = incomingReferences.Select(ConvertMetadataReference);
Trace.TraceInformation("[{0}]: Compiling '{1}'", GetType().Name, name);
var sw = Stopwatch.StartNew();
var compilationSettings = project.GetCompilerOptions(target.TargetFramework, target.Configuration)
.ToCompilationSettings(target.TargetFramework);
var sourceFiles = Enumerable.Empty<String>();
if (isMainAspect)
{
sourceFiles = project.SourceFiles;
}
else if (isPreprocessAspect)
{
sourceFiles = project.PreprocessSourceFiles;
}
var parseOptions = new CSharpParseOptions(languageVersion: compilationSettings.LanguageVersion,
preprocessorSymbols: compilationSettings.Defines);
IList<SyntaxTree> trees = GetSyntaxTrees(
project,
sourceFiles,
incomingSourceReferences,
parseOptions,
isMainAspect);
var embeddedReferences = incomingReferences.OfType<IMetadataEmbeddedReference>()
.ToDictionary(a => a.Name, ConvertMetadataReference);
var references = new List<MetadataReference>();
references.AddRange(exportedReferences);
var compilation = CSharpCompilation.Create(
name,
trees,
references,
compilationSettings.CompilationOptions);
var aniSw = Stopwatch.StartNew();
Trace.TraceInformation("[{0}]: Scanning '{1}' for assembly neutral interfaces", GetType().Name, name);
var assemblyNeutralWorker = new AssemblyNeutralWorker(compilation, embeddedReferences);
assemblyNeutralWorker.FindTypeCompilations(compilation.Assembly.GlobalNamespace);
assemblyNeutralWorker.OrderTypeCompilations();
var assemblyNeutralTypeDiagnostics = assemblyNeutralWorker.GenerateTypeCompilations();
assemblyNeutralWorker.Generate();
aniSw.Stop();
Trace.TraceInformation("[{0}]: Found {1} assembly neutral interfaces for '{2}' in {3}ms", GetType().Name, assemblyNeutralWorker.TypeCompilations.Count(), name, aniSw.ElapsedMilliseconds);
foreach (var t in assemblyNeutralWorker.TypeCompilations)
{
outgoingReferences.Add(new EmbeddedMetadataReference(t));
}
var newCompilation = assemblyNeutralWorker.Compilation;
newCompilation = ApplyVersionInfo(newCompilation, project, parseOptions);
var compilationContext = new CompilationContext(newCompilation,
incomingReferences.Concat(outgoingReferences).ToList(),
//.........这里部分代码省略.........