سؤال

كيف يمكنني بناء MSBuild ItemGroup استبعاد .إس الدلائل جميع الملفات داخل (بشكل متكرر).لدي:

<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