2017-03-23 39 views
6

内部.csprojファイルVisual StudioとXamarin Studioは、デフォルトでプロジェクト内で使用されるすべてのファイルを参照します。 csprojファイル内のワイルドカードと新規ファイルの追加

<ItemGroup> 
    <Compile Include="Utils\Foo1Utils.cs" /> 
    <Compile Include="Utils\Foo2Utils.cs" /> 
    <Compile Include="Services\FooService.cs" /> 
    ... 
</ItemGroup> 

は、すべてのファイルのほかに、当社のソリューション内のcsprojファイルの競合を避けるために、我々は ワイルドカードを使用するために開始しました:

<ItemGroup> 
    <Compile Include="Utils\*.cs" /> 
    <Compile Include="Services\*.cs" /> 
    ... 
</ItemGroup> 

問題が明らかに両方のVisual StudioとXamarin StudioのではないということですIDEにワイルドカードを使用していることを「説明」することができます。プロジェクトに新しいファイルを追加すると、そのフォルダにワイルドカード*.csを無視してファイルに新しい参照を追加します。すべてのファイルを追加するときに.csprojを実行する必要はないので、今でも良い解決策ですが、今度は毎回リセットする必要があります。

編集:ライダー(JetBrains)csprojにワイルドカードがあり、すべて新しいファイルを追加するとこの問題はありません。

+0

新しいファイルが追加されているUtilsまたはServicesフォルダ内にサブフォルダがありますか? – Poosh

+0

@Poosh私はサブフォルダを持っていることがありますが、経験上違いはありません。フォルダ構造を変更することはめったにないので、通常は "Utils \\ *。cls"と "Utils \ Subutils \\ *。cs" –

+0

Visual Studioでは、ワイルドカードを使用してcsprojファイルで参照されているフォルダのいずれかに新しいクラスを追加しようとすると、Visual Studioを終了します。ソリューション/プロジェクト? – Poosh

答えて

0

ライダーにはこの問題はないので、WinとMacの両方でVisual Studioの実装されていない機能だと思います。 新しいフォーマットの.csproj(<Project Sdk="Microsoft.NET.Sdk">で始まるものは、誰が変換を行うことができるのかを熱心にお勧めします)

1

プロジェクト用の新しい形式(.net core 2)を使用すると、プロジェクトフォルダ内のファイルに指定する必要なく、ワイルドカードインクルードが使用されます。目的のフレームワークを手動で設定して、必要なターゲットにコンパイルすることができます。

+0

ありがとう、私は古いプロジェクトのいくつかを変換しました。はい、実際には新しいフォーマットで何かを含める必要はありません。ちなみに、私はいくつかのプロジェクトを変換する際にいくつかの問題がありました。ライダーのワイルドカードがうまくいくと考えると、私の質問に対する解決策は単純です.MacとWinの両方のVisual Studioのバグです。 –

+0

かなり古いので、csproj形式はやや難しいです。古い奇妙なことを避けるために前進する方がよい。いくつかの問題は、数年後にプルリクエストによって修正される可能性があります。 – ozzymcduff

関連する問題