如何将现有文件夹结构添加到我的visual studio项目(python工具)?

Mie*_*ter 21 python visual-studio-2010 ptvs

这个问题基本上与这些问题相同:

如何在Visual Studio中将现有目录树添加到项目? 如何在Visual Studio中"添加现有项"整个目录结构?

除了解决方案不适合我.

它看起来像另一个用户有完全相同的问题

http://pytools.codeplex.com/discussions/249455

但是http://xkcd.com/979/又一次袭来.

我正在使用Visual Studio 2010和Visual Studio的Python工具.

在此项目中,用户创建新文件夹和代码并将其提交给SVN.另一个用户将更新SVN,新的文件和文件夹将显示在Windows资源管理器中.然后,用户需要一种简单的方法将这些文件夹和文件添加到解决方案中.

将解决方案放入SVN,这样添加的文件夹可以在提交之前添加到解决方案中.该解决方案在与源不同的区域内进行控制.

建议的解决方案:

/sf/answers/27473421/

不会工作,因为:

解决方案资源管理器中的"显示所有文件"按钮不会显示.

建议的解决方案:

/sf/answers/4044491/

不会工作,因为:

当我将文件夹拖到解决方案资源管理器窗格上时,删除文件夹的位置会影响解决方案嵌套的位置.如果它被丢弃在错误的文件夹中,它将显示为具有预期名称和预期内容的文件夹.这非常接近我们想要的,除了它在错误的文件夹中(因为我故意将它放在错误的文件夹中).如果文件夹被拖动到正确的位置,它将显示为带有感叹号的文件.当你双击"文件"时,它说

"The item <folder name> does not exist in the project directory.  It may have been moved, renamed, or deleted"
Run Code Online (Sandbox Code Playgroud)

我相信这是因为VS会尝试在您将其拖动到的目录中创建该文件夹的副本.如果我将文件夹完全移出我的项目(比如桌面),然后将其拖到适当位置的解决方案资源管理器中,它将显示为项目中的文件夹.该文件夹的副本也在磁盘上由drop指定的位置创建,具有相同的名称和内容.

因此,将文件夹拖放到解决方案资源管理器中似乎会在您删除解决方案时在解决方案中定位的磁盘上创建该文件夹的副本.如果该位置已具有该名称的文件夹,则该文件夹将作为文件导入.

我的解决方案

我正在使用PyCharm,它更好.

Mar*_*rot 5

如果没有其他工作,您可以在.pyproj-file中手动添加文件和文件夹.格式很简单:

<ItemGroup>
    <Compile Include="File1.py" /> <!-- List of files relative to .pyproj folder -->
    <Compile Include="test\file2.py" />
</ItemGroup>
<ItemGroup>
    <Folder Include="test\" /> <!-- List of folders -->
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

<ItemGroup>如果需要,您可以添加更多元素,如果愿意,可以混合文件和文件夹.

生成XML的脚本:

import os

def visit(folder):
    for fn in os.listdir(folder):
        filename = os.path.join(folder, fn)
        _, ext = os.path.splitext(fn)
        if os.isdir(filename):
            folders.append(filename)
            visit(filename)
        elif ext.lower() == '.py':
            files.append(filename)

files = []
folders = []

visit('.')

print '<ItemGroup>'
for fn in files:
    print '  <Compile Include="' + fn + '"/>'
print '</ItemGroup>'

if folders:
    print '<ItemGroup>'
    for fn in folders:
        print '  <Folder Include="' + fn + '\\"/>'
    print '</ItemGroup>'
Run Code Online (Sandbox Code Playgroud)