2016-11-09 51 views
0

簡而言之,我一直在研究一個工具,它可以使用.NET Compiler Platform修改解決方案內的所有類。爲了做到這一點,我必須爲所有項目添加一個程序集引用。使用Roslyn添加「格式良好」的程序集參考

目前,我用這行代碼:

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編譯器平臺。

感謝您的幫助!

回答

1

Roslyn的東西對於MSBuild的表示並不關心 - 它並不試圖成爲系統來做到這一點。你最好只使用XML或MSBuild API或其他。

+0

我剛剛發現了羅斯林的GitHub的頁面在這個問題上: https://github.com/dotnet/roslyn/issues/5959 無論如何,感謝您的回答。我會做XML方式的解決方法。 這將在未來得到修復。 – MDoobie