문제

.svn 디렉터리와 그 안에 있는 모든 파일을 (재귀적으로) 제외하려면 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