我正在写一个MSBuild任务,它将一些代码生成添加到标准C#项目(.csproj)中。该任务需要访问该项目引用的程序集中的类型。MSBuild从ProjectReference获取程序集引用
这是简单的组装引用(获得所有项目的<参考>),但它对于其他项目的引用(<ProjectReference>)变得更难
是否的MSBuild提供了一种方法来检索编译的程序集引用a <ProjectReference>?
如果没有,是否有一种简单的方法通过读取.csproj文件来解析该名称?
该.csproj文件不会直接提供编译的程序集路径,它必须从其他属性重建。此外,某些属性是有条件的(根据调试/发布配置),因此,使用一个简单的XPath阅读器将不能正常工作:
所在路径的dll文件dll文件名可以从<的AssemblyName >获得,但写在
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>;bin\Release</OutputPath>
<PropertyGroup>
有没有一种方法以编程方式读取.csproj的文件,并评估所有条件解决OutputPath正确的值?
我需要一个解决方案,其中引用的.csproj文件保持平原旧的项目文件(没有修改到的csproj文件,将在一个更方便的方式添加必要的信息)