1
私は、rosylnを使用してアセンブリ属性をAssemblyInfo.cs
に挿入する方法を理解しようとしています。アセンブリの属性をAssemblyInfo.csに挿入する
私の属性は次のようになり:
[assembly: Foo(@"\\somepath\tosomething)"]
そして、私はこのようにそれらを読むことができます:
var syntaxRoot = tree.GetRoot();
var attr = syntaxRoot.DescendantNodes().OfType<AttributeSyntax>();
var attrNames = attr.Select(a => a.Name);
var deployments = attr.Where(a => a.Name.ToString() == "Foo")
.Select(d => d.DescendantTokens()
.FirstOrDefault(t => t.Kind() == SyntaxKind.StringLiteralToken).ValueText);
そして、私は属性に渡された引数を取得することができます。
私はそうのような属性を挿入しようとすることができます:だからそれは私の属性を追加しましたが、それはdoesnのだ
...
[assembly: AssemblyFileVersion("1.0.0.0")]
[DeploymentLocation]
:これは、このような何かを探して終わるノードを挿入します
var list = new List<SyntaxNode>()
{
SyntaxFactory.AttributeList(SyntaxFactory.SeparatedList<AttributeSyntax>(new List<AttributeSyntax>()
{
SyntaxFactory.Attribute(SyntaxFactory.ParseName("DeploymentLocation"))
}))
};
var n = tree.GetRoot().InsertNodesAfter(tree.GetRoot().ChildNodes().Last(), list);
接頭辞がassembly:
であり、そこに文字列リテラル引数を取得する方法がわかりません。
ファイルを読み込んで単純なテキストライターを使用して文字列を挿入することはできますが、Roslynの動作方法を理解するためにはわかります。
ハにコードを貼り付けます。カッコいい。私はそのツールを知らなかった。 –