简而言之,我一直致力于使用.NET编译器平台修改解决方案中所有类的工具。为此,我必须为所有项目添加一个程序集引用。
目前,我使用这行代码:
var addedRef= MetadataReference.CreateFromFile(@"d:\Stuff\MyAssembly.dll")
.WithProperties(new MetadataReferenceProperties(MetadataImageKind.Assembly));
var sol = newSolution.AddMetadataReference(projectId, addedRef);
但不幸的是,它在.csproj文件中生成以下条目:
<Reference Include="..\Stuff\MyAssembly.dll" />
而不是那样,我想在我的.csproj中看到这个:
<Reference Include="MyAssembly.dll" />
当然有一个讨厌的解决方法:将.csproj文件解析为xml并手动插入......但我真的想避免这个,因为有.NET编译器平台。
提前感谢您的帮助!
答案 0 :(得分:1)
Roslyn的东西对MSBuild表示非常不关心 - 它并没有尝试成为系统来做到这一点。您最好只使用XML或MSBuild API或其他东西。