質問

.svn ディレクトリとその中のすべてのファイルを (再帰的に) 除外する MSBuild ItemsGroup を構築するにはどうすればよいですか。私が持っている:

<ItemGroup> 
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>

現時点では、これは何も除外しません。

役に立ちましたか?

解決

ご協力のおかげで、次のように並べ替えることができました。

<ItemGroup>
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" 
                   Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>

パターン マッチングは基本的にファイルに対して実行されるため、以下のものをすべて除外する必要があることがわかりました。 .svn ディレクトリ (.svn\\**) MSBuild が .svn ディレクトリ自体。

他のヒント

したがって、問題は、msbuild での何らかの理由による変数の連鎖にあります。以下は私にとってはうまくいきますが、MSBuildProjectDirectory変数に基づいた相対パスのみを使用する必要があることに注意してください。

<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
            Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

以下は機能しません。

<PropertyGroup>
    <WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
            Exclude="$(WebProjectDir)\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

非常に奇妙な!これだけで3時間くらい費やしてしまいました。

ここでは、本当に再帰的にそれを行うためのさらに良い方法を紹介します。ソリューションを 1 レベル以上深くすることはできないようです。

<LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>

包含/除外アプローチを使用するといくつかの不具合に遭遇したため、代わりにうまくいったものを以下に示します。

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top