gpt4 book ai didi

powershell - NuGet:是否可以通过Powershell添加一行代码?

转载 作者:行者123 更新时间:2023-12-02 23:44:33 25 4
gpt4 key购买 nike

我已经整理了一些NuGet软件包,其中一个是其他所有项目都引用的通用项目。

这个通用项目将配置类插入App_Start文件夹,然后WebActivator调用该类上的方法。

对于其他软件包之一,我希望在此方法中再添加一行代码,但是我正在努力寻找一种方法来完成此操作。

我知道我可以非常简单地添加一个仅包含这一行代码的附加类,但是如果可能的话,我更喜欢使用Install.ps1 powershell脚本将这行代码添加到现有配置类中。

使用经过预处理的* .cs.pp文件将覆盖现有文件(或添加一个新文件),而* .cs.transform不适用于此类文件。

我知道该类在哪里以及它叫什么,并且我知道该方法叫什么,那么Powershell是否提供一种在上述方法的末尾添加一行的方法?

最佳答案

这是可能的,但并非不重要。您还必须非常小心,因为从NuGet包中删除某人的代码不会使他们感到非常高兴。

安装NuGet软件包时,您可以访问Visual Studio对象模型(EnvDTE)。 $ project变量可用于访问所需的特定项目。由此,您可以使用FileCodeModel,它表示文件中的代码。然后,您需要找到该类及其方法。然后创建一个编辑点并插入文本。

下面将找到一个名为Class1的类,并将一行代码插入其Foo方法中。请注意,插入的代码行不会正确缩进,您需要通过查看文档来找出来。

$project.ProjectItems.Item("Class1.cs")
$namespace = $item.FileCodeModel.CodeElements | ? {$_.Kind -eq 5}
$namespace.Members.Item("Class1")
$method = $class.Members.Item("Foo")
$endPoint = $method.GetEndpoint([EnvDTE.vsCMPart]::vsCMPartBody)
$editPoint = $endpoint.CreateEditPoint()
$editPoint.Insert("int a = 0;")

另外,上面的代码不执行任何错误处理。

关于powershell - NuGet:是否可以通过Powershell添加一行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com