Estoy escribiendo una tarea de MSBuild que añade algo de generación de código a un proyecto estándar C# (.csproj). La tarea necesita tener acceso a los tipos de ensamblados de referencia por ese proyecto.MSBuild llegar referencia de ensamblado de ProjectReference
Esto es simple para referencias de ensamblado (obtener todos los artículos en <Referencia>), pero se hace más difícil para las referencias a otros proyectos (<ProjectReference>)
¿Tiene MSBuild proporciona una manera de recuperar una referencia de ensamblado compilado a partir de un ProjectReference < >?
Si no, ¿hay una forma sencilla de resolver ese nombre leyendo el archivo .csproj?
El archivo .csproj no proporciona directamente la ruta del ensamblado compilado, tiene que ser reconstruido a partir de otras propiedades. Además, algunas de las propiedades son condicionales (dependiendo de la configuración de depuración/versión), por lo que usar un lector de XPath simple no funcionaría:
El nombre del archivo Dll se puede obtener de <AssemblyName>, pero la ruta donde se encuentra el archivo Dll que está escrito es en
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>;bin\Release</OutputPath>
<PropertyGroup>
¿hay una manera de leer el archivo mediante programación .csproj y resolver el valor correcto de OutputPath mediante la evaluación de todas las condiciones?
Necesito una solución en la que los archivos referenciados .csproj siguen siendo viejos archivos de proyecto simple (no modificaciones a los archivos csproj que agregarían la información necesaria de una manera más accesible)