NuGet:使用Powershell / uninstall.ps1查找和删除代码

时间:2015-03-14 18:45:49

标签: powershell nuget nuget-package envdte

我有一些NuGet包,我把它们放在一起,其中一个是所有其他人引用的常见项目。

此公共项目将配置类插入App_Start文件夹,然后WebActivator将调用此类的方法。

对于其他一个软件包,我希望为此方法添加一行代码,然后使用 install.ps1 (使用this SO post中的代码)实现此目的。

要成为一个勤奋的NuGet包开发人员,如果卸载了NuGet包,我应该删除这行代码。

为了做到这一点,我尝试使用FileCodeModel的FindPattern方法来查找代码行,但是没有幸运能让它运行起来。

这是我到目前为止所做的:

$app_start = $project.ProjectItems.Item("App_Start")
$item = $app_start.ProjectItems.Item("my-config-file.cs")
$namespace = $item.FileCodeModel.CodeElements | ? {$_.Kind -eq 5}
$class = $namespace.Members.Item("My-Config-Class")
$method = $class.Members.Item("My-Method-Name")
$startPoint = $method.GetStartPoint([EnvDTE.vsCMPart]::vsCMPartBody)
$startPoint = $startPoint.CreateEditPoint()
$endPoint = $method.GetEndpoint([EnvDTE.vsCMPart]::vsCMPartBody)
$endPoint = $endpoint.CreateEditPoint()     
$startPoint.FindPattern("known-line-of-code", [EnvDTE.vsCMPart]::vsFindOptionsFromStart, ref $endPoint)

具体来说,最后一行FindPattern,我遇到了麻烦。文档列出了另一个可选参数,并通过Visual Studio的异常消息判断...

  

异常调用" FindPattern"用" 3"参数:"类型不匹配。

...我想我应该提供这个参数。但是我提供什么呢?

即使我可以找到代码行,我该如何删除呢?

FindPattern是错误的继续进行方式?有没有其他方法可以删除已知的代码行?

0 个答案:

没有答案