MSBuild ItemGroup ، باستثناء .إس الدلائل والملفات في
-
09-06-2019 - |
سؤال
كيف يمكنني بناء 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>