2017-12-01 5 views
0

ディレクトリツリーに他のプロジェクトファイルがある場合、dotnetビルドを使用して単一のプロジェクトを構築しようとしています。 documentationによるとdotnetビルドproject.csprojまだディレクトリを検索中

引数
プロジェクト
構築するためのプロジェクトファイル。プロジェクトファイルが指定されていない場合、MSBuild は、拡張子が でprojで終わるファイルを現在の作業ディレクトリで検索し、そのファイルを使用します。しかし

私は

dotnet build project.csproj -c Release 

を実行すると、すべてのディレクトリを再帰的に検索し、それが.csprojファイルを発見したため、すべてのプロジェクトをビルドしようとしています。

私の場合は、ルートディレクトリにproject.csprojがあります。 5つのディレクトリレベルがダウンし、3つの他の.csprojファイルがあります。ここでは、ファイルがどのように見えるかだ、名前が変更さ:

  1. ./project.csproj
  2. ./scriptlibrary/Projects/project1/dir1/dir2/project2.csproj
  3. ./scriptlibrary/Projects/project1/私は実行DIR1/DIR3/project3.csproj
  4. ./scriptlibrary/Projects/project1/dir1/dir4/project4.csproj

dotnet build project.csproj -c Release 

他の.csprojファイルを検索してビルドしようとします。 project.csprojは他のプロジェクトに依存しません。

これはドキュメントと一致していないようです。ビルドをコマンドラインで指定した単一のプロジェクトに制限するにはどうすればよいですか?

+0

ログを共有できますか?それはプロジェクトファイルをビルドしようとしますか、それともすべての.csファイルを含むだけですか?後者は、トップレベルプロジェクトの除外パターンを設定しない限り期待されます –

答えて

0

は実際に、この問題には2つの可能な解決策があります

  1. はサブフォルダからプロジェクトを除外するために、あなたのフォルダ構造をリファクタリング。あなたのプロジェクトには新しい.slnが必要になります。

    ./ メイン /project.csproj

    ./scriptlibrary/Projects/project1/dir1/dir2/project2.csproj ./scriptlibrary/Projects/project1/dir1/dir3/project3.csproj 。あなたがproject.csproj<DefaultItemExcludes>プロパティ項目を追加することにより、コンパイルからサブフォルダを除外することができません傾ける場合/scriptlibrary/Projects/project1/dir1/dir4/project4.csproj

  2. <PropertyGroup> 
        <DefaultItemExcludes>scriptlibrary\Projects\*</DefaultItemExcludes> 
    </PropertyGroup> 
    

    これは、指定されたサブフォルダをコンパイルから除外するコンパイラを強制し、他のプロジェクトはプロジェクトの範囲内でコンパイルされません。csproj

関連する問題