MSBuild,如何从.csproj获取所有项目引用

时间:2016-08-05 14:23:33

标签: msbuild msbuild-task nswag

我是否可以在msbuild命令中使用任何变量或属性来获取.csproj中的所有项目引用?

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

编辑: 对不起我的不精确。我有项目A,它有项目B,C,D的项目引用。我需要知道的是这个项目的dll在我的后续构建任务中使用它们。这就是我现在所拥有的:

<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)收集项目A中的所有项目引用(B,C,D)。)

($(TargetPath)是带有项目A)的dll的路径

我的问题是:这个解决方案是否会再次构建这些dll,或者它会跳过构建过程,因为它们已经构建了?

2 个答案:

答案 0 :(得分:0)

根据this问题,我在代码中使用了Targets="GetTargetPath"

我如何实际检查此构建操作是否再次执行?

答案 1 :(得分:0)

使用当前版本,您可以在程序集路径中定义通配符,如:

../**/bin/$(Configuration)/*.dll
相关问题