3

我可以在 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,或者它会因为它们已经构建而跳过构建过程?

4

2 回答 2

0

根据我在代码中使用的这个问题。Targets="GetTargetPath"

我如何才能真正检查此构建操作是否不再执行?

于 2016-08-12T14:01:25.147 回答
0

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

../**/bin/$(Configuration)/*.dll
于 2016-08-29T22:15:06.293 回答