我使用Rosyln操纵AssemblyInfo.cs
作为我正在制作的工具的一部分,而且我无法找到从文件中删除此行的正确方法:
[assembly: DeploymentLocation("\\\\someserver\\folder")]
我也可以这样:
[assembly: DeploymentLocation("\\\\someserver\\folder"), DeploymentLocation("\\\\someotherserver\\folder")]
我想要做的是找到这些行,删除它们并重新创建它们。重新创建它们很好,但删除它们是个问题。
我可以找到这样的DeploymentLocation
件:
var attr = syntaxRoot.DescendantNodes().OfType<AttributeSyntax>().Where(a => a.Name.ToString() == "DeploymentLocation");
然后我做了这样的事情:
if (attr?.Any() == true)
{
// remove existing attributes...
syntaxRoot = syntaxRoot.RemoveNodes(attr, SyntaxRemoveOptions.KeepNoTrivia);
}
但最终将此留在我的档案中:
[assembly: ]
显然,这不是我想要的。如何找到[assembly: ]
位并删除 以及DeploymentLocation
属性?显然,我不想删除所有[assembly: ]
行,因为有很多行是需要留下的样板内容。
assembly
位似乎不被视为Parent
Parent
attr
中assembly
的整个文档。那么我需要做些什么来回到char *CheckLoginPass(char *login, char *pass)
{
//use curl_easy_setopt for check login/pass
return stdout;
}
char *AuthOnSite() //make auth on site
{
//use curl_easy_setopt for auth by login/pass
return htmlpage;
}
char *TestMyAuth()
{
//use curl_easy_setopt for test auth
return htmlpage;
}
void Test()
{
char *stdout = CheckLoginPass("login", "pass"); // is good
char *htmlpage = AuthOnSite(); // is good
htmlpage = TestMyAuth(); // session is lose and I am not logined on site
}
件?这甚至叫什么?
答案 0 :(得分:3)
好的,我想出来了。您需要选择AttributeListSyntax
,它基本上是包含符合我想要的[]
节点的方括号AttributeSyntax
的集合。然后,我可以删除包含AttributeTargetSyntax
(assembly:
部分)的整个内容,AttributeSyntax
var attr = syntaxRoot.DescendantNodes().OfType<AttributeListSyntax>()
.Where(a => a.DescendantNodes().OfType<AttributeSyntax>()
.Any(s => s.Name.ToString() == "DeploymentLocation"));