我正在做一个GAX项目,我有一个动作,将文件夹中的所有文件添加到新的“解决方案项目”文件夹中。这用于将项目根目录所需的文件作为Local.testsettings等插入。
我的问题是,当我添加文件时,它会立即打开。对于.txt文件等,它并不太糟糕。对于.testsettings文件,它会打开一个模块窗口,阻止所有进程。
我该怎么做以防止这种开放?我不能在ProjectItem.Document上使用.close,因为代码不会在mySolution.ProjectItems.AddFromFile(file)语句之后执行。
如果您知道有任何方法可以防止文件在添加时打开(无论是手动添加还是通过代码添加),我想知道。
正如所要求的那样,完整的代码是:
DTE dte = GetService<DTE>();
string folderPath = System.IO.Directory.GetCurrentDirectory() + SolutionFolderPath;
var solution = dte.Solution as Solution2;
var solutionItems = solution.AddSolutionFolder("Solution Items");
foreach (var file in Directory.GetFiles(folderPath))
{
var item = solutionItems.ProjectItems.AddFromFile(file);
}
非常感谢!
答案 0 :(得分:0)
从这里过去可以说是一个爆炸,但是当我最近想为我编写的自定义VS多项目向导做完全相同的事情时,我遇到了这个问题。在VS2017中,快速简单的解决方案是在添加文件之后(使用与OP类似的代码),我在向导实现的IWizard.RunFinished方法中调用了此方法:
DTE.Documents.CloseAll(vsSaveChanges.vsSaveChangesNo);
请注意,在我的向导代码中,我将_DTE对象存储在IWizard.RunStarted的成员属性中,以供以后使用(RunStarted方法之外)。现在,当我的模板向导完成时,没有打开的文档!