ResolveProjectReferences (по крайней мере та, на которую вы указываете) - это цель, которая используется для разрешения межпроектных ссылок путем их построения с помощью задачи . Эта задача принимает файл проекта для сборки, а также имена одной или нескольких целей в проекте, которые должны вызываться как часть сборки (она также принимает другие параметры, но вы можете пока игнорировать их).
Рассмотрим следующую цель:
<Target
Name="Build"
Returns="@(BuildOutput)">
<ItemGroup>
<BuildOutput Include="bin\Debug\Foo.exe" />
</ItemGroup>
</Target>
Если вы ссылаетесь на проект, содержащий эту цель, и хотите разрешить выходные данные цели "Foo", в вашем проекте будет элемент , например:
<ItemGroup>
<ProjectReference Include="..\SomeProject\SomeProject.proj">
<Targets>Build</Targets>
</ProjectReference>
</ItemGroup>
Обратите внимание, что, если «Build» является целью по умолчанию для указанного проекта, вы можете оставить метаданные «Targets» полностью отключенными. Вы также можете указать несколько целей в метаданных целей (список, разделенный точкой с запятой).
Таким образом, ваша цель ResolveProjectReferences приедет и вызовет задачу , передав ее ".. \ SomeProject \ SomeProject.proj" и попросив ее создать цель "Build". Теперь, поскольку цель «Build» задает выходные данные с помощью своего атрибута Returns (но атрибут Outputs будет использоваться, если атрибут Returns не указан), эти выходные данные будут собираться во время сборки и возвращаться с параметром TargetOutputs tasks , В них добавлено несколько дополнительных фрагментов метаданных, которые позволяют разделить их по исходной цели. К ним относятся:
- MSBuildSourceProjectFile - ссылочный проект, сборка которого сгенерировала вывод
- MSBuildSourceTargetName - имя цели, сборка которой сгенерировала вывод
Если вы работаете в проекте C #, существует множество других этапов эталонного разрешения (включая разрешение сборки). Напишите мне, если вы хотите знать об этом.