MSBuild obter referência de assembly de ProjectReference

Eu estou escrevendo uma tarefa do MSBuild que adiciona alguns geração de código a um projeto C # padrão (.csproj). A tarefa precisa acessar tipos em assemblies referenciados por esse projeto.

Isso é simples para referências de assembly (obter todos os itens em <Reference>), mas fica mais difícil para referências a outros projetos (<ProjectReference>)

O MSBuild fornece uma maneira de recuperar uma referência de assembly compilada de um <ProjectReference>?

Se não, existe uma maneira simples de resolver esse nome lendo o arquivo .csproj?

O arquivo .csproj não fornece diretamente o caminho de montagem compilado, ele deve ser reconstruído de outras propriedades. Além disso, algumas das propriedades são condicionais (dependendo da configuração de Debug / Release), portanto, usar um leitor XPath simples não funcionaria:

Nome do arquivo DLL pode ser obtido a partir de <AssemblyName>, mas o caminho onde o arquivo DLL está escrito está em

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <OutputPath>;bin\Release</OutputPath>
<PropertyGroup>

Existe uma maneira de ler o arquivo .csproj programaticamente e resolver o valor correto do OutputPath avaliando todas as condições?

Preciso de uma solução em que os arquivos .csproj referenciados permaneçam arquivos de projeto simples (sem modificações nos arquivos csproj que adicionariam as informações necessárias de maneira mais acessível)

questionAnswers(1)

yourAnswerToTheQuestion