Ich schreibe eine MSBuild-Task, die einige Code-Generierung zu einem Standard-C# -Projekt (.csproj) hinzufügt. Die Task muss auf Typen in Assemblys zugreifen, auf die von diesem Projekt verwiesen wird.MSBuild erhalten Assembly-Referenz von ProjectReference
ist diese einfache Montagereferenzen (alle Elemente in <Referenz> bekommen), aber es wird noch schwieriger für Verweise auf andere Projekte (<ProjectReference>)
Bietet MSBuild eine Möglichkeit, eine kompilierte Assembly Referenz aus abrufen a <ProjectReference>?
Wenn nicht, gibt es eine einfache Möglichkeit, diesen Namen durch Lesen der .csproj-Datei aufzulösen?
Die Datei .csproj stellt den kompilierten Assembly-Pfad nicht direkt bereit, sondern muss aus anderen Eigenschaften rekonstruiert werden. Außerdem sind einige der Eigenschaften bedingt (abhängig von der Debug/Release-Konfiguration), so dass die Verwendung eines einfachen XPath-Readers nicht funktioniert:
Dll-Dateiname kann von <AssemblyName> erhalten werden, aber der Pfad, wo die Dll-Datei geschrieben wird, ist in
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>;bin\Release</OutputPath>
<PropertyGroup>
gibt es eine Möglichkeit programmatisch die CSPROJ-Datei zu lesen und den richtigen Wert von OutputPath durch alle Bedingungen Auswertung zu lösen?
Ich brauche eine Lösung, bei der die referenzierten CSPROJ Dateien nur alte Projektdateien (keine Änderungen an den csproj Dateien, die die notwendigen Informationen in einer zugänglicheren Weise hinzufügen würde) bleiben