钩入罗斯林构建过程

本文关键字:过程 构建 罗斯林 | 更新日期: 2023-09-27 18:31:23

是否可以

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

钩入罗斯林构建过程

在我看来,乔恩在他的评论中几乎是正确的。我的建议是创建一个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>

"MyNamespace.MyReferenceValidationTask"标记"SolutionRoot"中的属性是任务中的属性。Visual Studio 中可用的所有宏也可以在此处找到。(见这篇文章在这里:https://stackoverflow.com/a/1453023/978594)

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