23

この質問は、本質的に次の質問と同じです。

Visual Studio のプロジェクトに既存のディレクトリ ツリーを追加するにはどうすればよいですか? Visual Studioでディレクトリ構造全体を「既存のアイテムを追加」する方法は?

解決策がうまくいかないことを除いて。

別のユーザーがまったく同じ問題を抱えているようです

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

しかし、http://xkcd.com/979/が再び攻撃を受けました。

Visual Studio 2010 と Python Tools for Visual Studio を使用しています。

このプロジェクトでは、ユーザーが新しいフォルダーとコードを作成し、SVN にコミットします。別のユーザーが SVN を更新すると、新しいファイルとフォルダーが Windows エクスプローラーに表示されます。次に、ユーザーは、これらのフォルダーとファイルをソリューションに簡単に追加する方法を必要とします。

SVN にソリューションを配置して、コミットする前に追加のフォルダーをソリューションに追加できるようにすることはオプションではありません。ソリューションは、ソースとは別の領域で制御されます。

推奨される解決策:

https://stackoverflow.com/a/392477/606660

次の理由で機能しません:

ソリューション エクスプローラーの [すべてのファイルを表示] ボタンが表示されません。

推奨される解決策:

https://stackoverflow.com/a/57778/606660

次の理由で機能しません:

フォルダーをソリューション エクスプローラー ペインにドラッグすると、フォルダーがドロップされる場所が、ソリューション内の入れ子になっている場所に影響します。間違ったフォルダーにドロップされた場合、予期される名前と予期される内容を持つフォルダーとして表示されます。これは、間違ったフォルダーにあることを除いて、私たちが望むものに非常に近いものです (意図的に間違ったフォルダーにドロップしたため)。フォルダを正しい場所にドラッグすると、感嘆符が付いたファイルとして表示されます。「ファイル」をダブルクリックすると、

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

これは、VS がドラッグ先のディレクトリにフォルダーのコピーを作成しようとするためだと思います。フォルダーをプロジェクトから完全に (たとえばデスクトップに) 移動し、ソリューション エクスプローラーの適切な場所にドラッグすると、プロジェクト内のフォルダーとして表示されます。フォルダーのコピーも、ディスク上のドロップで指定された場所に、同じ名前と内容で作成されます。

したがって、フォルダーをソリューション エクスプローラーにドラッグ アンド ドロップすると、ドロップしたときにソリューションで対象とした場所に、ディスク上のフォルダーのコピーが作成されるようです。その場所にその名前のフォルダーが既にある場合、そのフォルダーはファイルとしてインポートされます。

私の解決策

私は代わりに PyCharm を使用しています。

4

3 に答える 3

6

他に何も機能しない場合は、ファイルとフォルダーを.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>

必要に応じてさらに要素を追加し<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>'
于 2012-10-01T22:35:07.980 に答える
3

すべてのファイルを表示します。Show All files はプロジェクト メニューにあります。

プロジェクト->すべてのファイルを表示

于 2015-02-24T21:10:18.327 に答える