2014-11-21 14 views
7

È possibile collegarsi al processo di compilazione di Roslyn durante una build di Visual Studio/TFS e, in caso affermativo, è possibile ottenere una sospensione di Microsoft.CodeAnalysis.Solution/Microsoft.CodeAnalysis. Istanza del progetto utilizzata da Roslyn durante la compilazione?Collegamento al processo di compilazione di Roslyn

+0

Sarebbe più semplice aiutarti se diresti cosa stai cercando di ottenere. Ad esempio, è possibile aggiungere la diagnostica del codice in modo relativamente semplice. –

+0

@Jon: Voglio fare alcune convalide di riferimento (ad esempio progetti che non dovrebbero fare riferimento ad altri progetti) sui progetti in costruzione, quindi ho bisogno di ottenere l'istanza di Microsoft.CodeAnalysis.Solution in fase di compilazione. – dotarj

+1

Giusto. Sembra che potrebbe essere qualcosa di meglio mirato a un compito di MSBuild rispetto a Roslyn ... il che non significa dire che * non è * un modo di farlo a Roslyn, ovviamente. –

risposta

0

Per come la vedo io, Jon ha ragione nel suo commento. Quello che vorrei suggerire è creare un task MSBuild, che è il tuo hook preferito nel processo di compilazione.

Creare un file di progetto MSBuild (probabilmente li avete già visti, sono quei file che hanno l'estensione). Sembra qualcosa di simile:

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

L'attributo nel "MyNamespace.MyReferenceValidationTask" tag "SolutionRoot" è la vostra proprietà nel vostro compito. Tutti i macro disponibili in Visual Studio sono disponibili anche qui. (vedi questo post qui: https://stackoverflow.com/a/1453023/978594)

Ciò che fai all'interno del compito dipende interamente da te. Ad esempio, è possibile caricare il file della soluzione con Roslyn e quindi disporre di tutti i progetti e dei relativi riferimenti e effettuare la convalida desiderata.