2014-11-21 4 views
7

Visual Studio/TFS 빌드 중에 Roslyn 빌드 프로세스에 연결할 수 있습니까? 그렇다면 Microsoft.CodeAnalysis.Solution/Microsoft.CodeAnalysis를 확보 할 수 있습니까? 컴파일하는 동안 Roslyn에서 사용중인 프로젝트 인스턴스가 있습니까?Roslyn 빌드 프로세스에 후크

+0

달성하려는 목표를 말하면 도움이 될 수 있습니다. 예를 들어, 추가 코드 진단을 비교적 쉽게 추가 할 수 있습니다. –

+0

@ 존 : 빌드중인 프로젝트에서 참조 유효성 검사 (예 : 다른 프로젝트를 참조하지 말아야하는 프로젝트)를 수행하고 싶습니다. 따라서 빌드중인 Microsoft.CodeAnalysis.Solution 인스턴스를 보유해야합니다. – dotarj

+1

오른쪽. Roslyn보다 MSBuild 작업을 더 잘 겨냥한 것 같아요. 물론 Roslyn에서 * 수행하는 방법이 아닙니다. –

답변

0

나는 그것을 보는 방법, 존 꽤 자신의 의견에 맞습니다. 내가 제안하는 것은 MSBuild 작업을 만드는 것입니다.이 작업은 빌드 프로세스에 대한 후크입니다.

MSBuild 프로젝트 파일을 만듭니다 (아마 이미 보았을 것입니다.이 파일은 .targets 확장자입니다). 은 "MyNamespace.MyReferenceValidationTask"태그 "SolutionRoot"의 속성은 당신의 작업에 속성이

<?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> 

이다 : 그것은 다음과 같이 보입니다. Visual Studio에서 사용할 수있는 모든 매크로도 여기에서 사용할 수 있습니다. (이 게시물을 참조하십시오 : https://stackoverflow.com/a/1453023/978594)

작업 내에서 수행하는 작업은 전적으로 귀하에게 달려 있습니다. 예를 들어 Roslyn을 사용하여 솔루션 파일을로드 할 수 있으므로 모든 프로젝트와 해당 참조가 있고 원하는 유효성 검사를 수행 할 수 있습니다.