Можно ли подключиться к процессу сборки Roslyn во время сборки Visual Studio/TFS, и, если да, возможно ли удержать Microsoft.CodeAnalysis.Solution/Microsoft.CodeAnalysis. Экземпляр проекта используется Roslyn во время компиляции?Подключиться к процессу сборки Roslyn
7
A
ответ
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>
атрибут в «MyNamespace.MyReferenceValidationTask» тег «SolutionRoot» является вашей собственностью в вашей задаче. Все макросы, доступные в Visual Studio, также доступны здесь. (см. этот пост здесь: https://stackoverflow.com/a/1453023/978594)
То, что вы делаете внутри задачи, полностью зависит от вас. Например, вы можете загружать файл решения с помощью Roslyn и, таким образом, иметь все проекты и их ссылки и выполнять требуемую проверку.
Было бы проще помочь вам, если бы вы сказали, чего вы пытаетесь достичь. Например, вы можете легко добавить дополнительную диагностику кода. –
@Jon: Я хочу выполнить некоторую проверку ссылок (например, проекты, которые не должны ссылаться на некоторые другие проекты) на строящиеся проекты, поэтому мне нужно удержать экземпляр Microsoft.CodeAnalysis.Solution. – dotarj
Справа. Похоже, что это может быть что-то лучшее, что нацелено на задачу MSBuild, чем на Roslyn ... что не означает сказать, что это не * способ сделать это в Roslyn, конечно. –