进入Roslyn构建过程

dot*_*arj 7 c# msbuild msbuild-task roslyn

是否有可能在Visual Studio/TFS构建期间挂钩Roslyn构建过程,如果是,是否可以获得Roslyn在编译期间使用的Microsoft.CodeAnalysis.Solution/Microsoft.CodeAnalysis.Project实例?

Ale*_*ris 0

在我看来,乔恩的评论非常正确。我的建议是创建一个 MSBuild 任务,这是您想要进入构建过程的挂钩。

创建一个 MSBuild 项目文件(您可能已经见过它们,这些文件具有扩展名.targets)。它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="MyNamespace.MyReferenceValidationTask" AssemblyFile="MyPath\MyNamespace.dll"/>
    <Target 
        BeforeTargets="BeforeCompile"
        Name="ValidationTarget">
        <MyNamespace.MyReferenceValidationTask
            SolutionRoot="$(SolutionDir)" />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

“MyNamespace.MyReferenceValidationTask”标签“SolutionRoot”中的属性是您的任务中的属性。Visual Studio 中可用的所有宏也可在此处使用。(请参阅此处的这篇文章:/sf/answers/101711641/

你在任务中做什么完全取决于你。例如,您可以使用 Roslyn 加载解决方案文件,从而拥有所有项目及其引用并进行所需的验证。