Как я могу добавить существующую структуру папок в мой проект Visual Studio (инструменты Python)?

Этот вопрос по сути такой же, как эти:

Как добавить существующее дерево каталогов в проект в Visual Studio? Как "Добавить существующий элемент" всю структуру каталогов в Visual Studio?

За исключением того, что решения не работают для меня.

Похоже, у другого пользователя точно такая же проблема

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

Но http://xkcd.com/979/ снова ударил.

Я использую Visual Studio 2010 с Python Tools для Visual Studio.

В этом проекте пользователи создают новые папки и код и фиксируют их в SVN. Другой пользователь обновит SVN, и новые файлы и папки появятся в проводнике Windows. Затем пользователю нужен простой способ добавить эти папки и файлы в решение.

Поместить решение в SVN таким образом, чтобы добавленные папки могли быть добавлены в решение до фиксации, не вариант. Раствор контролируется отдельно от источника.

Предлагаемое решение:

/questions/23455594/kak-dobavit-suschestvuyuschee-derevo-katalogov-v-proekt-v-visual-studio/23455596#23455596

Не будет работать, потому что:

Кнопка "Показать все файлы" в обозревателе решений не отображается.

Предлагаемое решение:

/questions/37655304/kak-mne-dobavit-suschestvuyuschij-element-vsyu-strukturu-katalogov-v-visual-studio/37655312#37655312

Не будет работать, потому что:

Когда я перетаскиваю папку на панель обозревателя решений, расположение папки, на которую она упала, влияет на то, где в решении она вложена. Если он помещается в неправильную папку, он отображается как папка с ожидаемым именем и ожидаемым содержимым. Это действительно близко к тому, что мы хотим, за исключением того, что он находится в неправильной папке (так как я уронил его в неправильную папку, намеренно). Если папка перетаскивается в правильное место, она отображается в виде файла с восклицательным знаком. Когда вы дважды кликаете на "файл", он говорит

"The item <folder name> does not exist in the project directory.  It may have been moved, renamed, or deleted"

Я полагаю, что это потому, что VS попытается создать копию папки в каталоге, в который вы ее перетаскиваете. Если я полностью переместу папку из своего проекта (скажем, на рабочий стол), а затем перетащу ее в обозреватель решений в нужном месте, она отобразится в виде папки в проекте. Копия папки также создается на диске в месте, указанном в раскрывающемся списке, с тем же именем и содержимым.

Таким образом, создается впечатление, что перетаскивание папки в обозреватель решений создаст копию папки на диске в том месте, которое вы указали в своем решении, когда вы его отбросили. Если в этом месте уже есть папка с таким именем, папка импортируется как файл.

Мое решение

Вместо этого я использую PyCharm, это намного лучше.

3 ответа

Если больше ничего не работает, вы можете добавить файлы и папки вручную в .pyproj-файл. Формат прост:

<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>

Вы можете добавить больше <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>'

Показать все файлы работает. Показать все файлы в меню проекта.

Проект-> Показать все файлы

Это сработало для меня в visual studio 2013, я не знаю, применимо ли это к другим итерациям Visual Studio.

После установки Python Tools для Visual Studio (PTVS), который я нашел здесь

  1. Откройте Visual Studio, перейдите к FILE->NEW->PROJECT (или удерживайте Cntrl+ Shift+N) введите описание изображения здесь

  2. В диалоговом окне нового проекта перейдите к существующему каталогу проекта Python. Введите название вашего проекта в поле имени проекта. снимите флажок создать каталог для решения (если вы не хотите создавать новый каталог проекта). И выберите "Из существующего кода Python" и нажмите "ОК". введите описание изображения здесь

  3. В мастере "Создать новый проект из существующего кода Python" следуйте указаниям и при необходимости выполните все необходимые настройки или просто нажмите "Готово". введите описание изображения здесь

Другие вопросы по тегам