[visual-studio] Visual Studioで既存のディレクトリツリーをプロジェクトに追加するにはどうすればよいですか?



Answers

Windows ExplorerからVisual Studioソリューションウィンドウにフォルダをドラッグアンドドロップすることもできます。

Question

問題は本当にシンプルです。 Visual Studioでフォルダを作成するのではなく、プロジェクトのディレクトリ構造をファイルシステムに作成します。 構造を維持したまま、どのようにプロジェクトにすべてのフォルダとファイルを含めるには?

Servicesという名前のフォルダに "Existing File"を追加し、ディレクトリ構造.. Services> AccountManagement> CreateAccount.csのファイルに移動すると、Visual StudioにはServices> CreateAccount.csのように表示されます。 これいらない。

私は、組織全体に同じ構造を使用しているクライアント開発者を模倣しているので、すでに完成したディレクトリ構造を完成させました。 Visual Studioですべてのフォルダとファイルをプロジェクトに追加するにはどうすればよいですか? あるいは、私はMicrosoftのほとんどのユーザーが何をして、それを「実行」し、Visual Studioを使って各フォルダを再作成する必要がありますか?




Yuchenの答えを広げるために、リンクとしてファイルとパスを含めることができます。 既存のアイテムを追加するのと同じことではありません。これは、プロジェクトのフォルダ構造内に余分なコピーを作成しないためです。 1つの正規のフォルダ/ファイルなどをさまざまな場所で使用したいが、そのバージョン/コピーを1つだけ維持したい場合に便利です。

*.csprojファイルに追加してリンクを作成する方法の例を次に示します

<Compile Include="$(Codez)\z.Libraries\Common\Strings\RegexExtensions.cs">
    <Link>Helpers\RegexExtensions.cs</Link>
</Compile>

<Compile Include="..\..\z.Libraries\MoreLINQ\MoreLinq\ExceptBy.cs">
    <Link>Helpers\ExceptBy.cs</Link>
</Compile>

<Content Include="C:\Codez\Libs\Folder\OtherFolder\**\*.*">
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

$(Codez)は私が定義したWindows環境変数で、同じ方法で組み込みの環境変数を使うことができます。

最後のサンプルグループは、最終出力に必要なコンテンツファイルの束です。 詳細についてはhttps://.com/a/11808911/492およびその他の回答とリンクをhttps://.com/a/11808911/492 。

その他のMSBuild情報は、 https://msdn.microsoft.com/en-us/library/bb629388.aspx




私は、コンパイルインクルード= "。\コード***。cs"でこれを行う方法を見つけたと思う。私が望んだのは、コードフォルダ内に再帰的にコードを含めることだ。

ここにプロジェクトファイルサンプルがあります。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0" DefaultTargets="BuildTarget">
    <PropertyGroup>
        <OutputType>Library</OutputType>
    </PropertyGroup>
    <PropertyGroup>
        <StartupObject />
    </PropertyGroup>
    <PropertyGroup>
        <RootNamespace>Autogen</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <Compile Remove="@(Compile)" />
        <Compile Include=".\Code\**\*.cs" />
    </ItemGroup>
    <Target Name="BuildTarget">
        <Message Text="Build selected" Importance="high"/>
    </Target>
</Project>



Visual Studio 2015では、これがあなたのやり方です。

特定のフォルダの下にすべての子孫ファイルを自動的に含める場合は、次のようにします。

<Content Include="Path\To\Folder\**" />

これは、指定されたパス内のファイルのみを含めるように制限できます。

<Content Include="Path\To\Folder\*.*" />

または、指定された拡張子のファイルのみ:

<Content Include="Path\To\Folder\*.jpg" >

リファレンス: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio : http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio




Visual Studio 2017では、 ソリューションビューフォルダビューを前後に切り替えることができます。 これはソリューションをよりきれいに保つので、これはより良いオプションだと思います。 これを使って.gitignore、.mdファイルなどを編集します。




Links