gpt4 book ai didi

visual-studio - 打字机相对目录

转载 作者:行者123 更新时间:2023-12-02 04:35:51 25 4
gpt4 key购买 nike

我正在使用 Typewriter Visual Studio 和 Visual Studio 2017 的扩展。以下是 Typescript 模板文件。

${
using System.IO;

Template(Settings settings)
{
settings.IncludeProject("ProjectName");
}

string Test(Class c)
{
//return Path.GetDirectoryName(Path.GetDirectoryName( System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase ))); // > file:\C:\Users\[user]\AppData\Local
//return Environment.CurrentDirectory; // > C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE
return String.Join(", ", Directory.GetFiles("relative\path")); // > System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\relative\path'.
}

}
$Classes(ProjectName.Models.*)[
export class $Name {
$Properties[
public $Name: $Type;]
// $Test
}]

使用 Directory.GetFiles 时,路径是相对于 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE 而不是相对于模板文件或项目。如何获取相关文件?

附言不确定这是否特定于打字机或一般的 Visual Studio 扩展。

编辑
我已经尝试过 DTE :

using EnvDTE;
DTE dte = (DTE)GetService(typeof(DTE));
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);

但我得到找不到类型或命名空间名称“EnvDTE”(您是否缺少 using 指令或程序集引用?) 而且我不知道如何在现有的扩展。如果我可以使用 DTE,那将解决最初的问题。

最佳答案

该类的 $Parent 属性是一个 $File,它有一个 $FullName 属性,它是绝对文件名。我正在使用它来获取接口(interface)的文件名:

string FileName(Interface @interface)
{
return (@interface.Parent as File).FullName;
}

也许您可以从那里找出模板文件的路径?

关于visual-studio - 打字机相对目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43194735/

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