2016-08-05 43 views
1

Gibt es irgendeine Variable oder Eigenschaft, die ich in Msbuild-Befehl verwenden könnte, um alle Projektreferenzen von .csproj zu erhalten?MSBuild, wie bekomme ich alle Projektreferenzen von .csproj

NSwag.exe webapi2swagger /assembly:@(GimmeAllReferencies?) /controller:Namespace.MyController /output:SwaggerFiles/MyControllerSwagger.json 

EDIT: Sorry für meine Unschärfen. Ich habe Projekt A, das Projektreferenzen zu Projekt B, C, D hat. Was ich wissen muss, ist, wo sind dlls zu diesem Projekt, um sie in meiner Nachbauaufgabe zu verwenden. Hier ist, was ich jetzt habe:

<Target Name="AfterBuild"> 
<MSBuild Projects="@(ProjectReference)" Targets="Build" BuildInParallel="true"> 
    <Output TaskParameter="TargetOutputs" ItemName="OutputAssemblies" /> 
</MSBuild> 
<Exec Command="$(SolutionDir)Packages\NSwag.4.0.0\NSwag.exe webapi2swagger /assembly:@(OutputAssemblies,','),$(TargetPath) /controller:Controller1 /output:Swagger1.json" /> 
<Exec Command="$(SolutionDir)Packages\NSwag.4.0.0\NSwag.exe webapi2swagger /assembly:@(OutputAssemblies,','),$(TargetPath) /controller:Controller2 /output:Swagger2.json" /> 
<Exec Command="$(SolutionDir)Packages\NSwag.4.0.0\NSwag.exe webapi2swagger /assembly:@(OutputAssemblies,','),$(TargetPath) /controller:Conotrller3 /output:Swagger3.json" /></Target> 

(@ (ProjectReference) sammeln alle Projektreferenzen (B, C, D) in Projekt A)

($ (TargetPath) ist Weg Die DLL mit Projekt A)

Meine Frage ist: Wird diese Lösung diese DLL wieder bauen oder wird Build-Prozess überspringen, weil sie bereits gebaut wurden?

+0

Sie sollten auch die msbuild Befehl (zB exec) hinzufügen und angeben, welche DLLs enthalten sein sollten ... –

+0

Wenn Sie meinen, Wenn Sie möchten, dass der Inhalt der ItemGroup 'Reference' angezeigt wird, können Sie einfach ein Ziel hinzufügen, das' 'enthält – stijn

Antwort

0

Nach this frage ich verwendet Targets="GetTargetPath" in meinem Code.

Wie kann ich tatsächlich überprüfen, ob diese Build-Aktion nicht mehr funktioniert?

0

Mit der aktuellen Version können Sie Platzhalter in den Montagepfade wie definieren:

../**/bin/$(Configuration)/*.dll