MSBuild ItemGroup(.svn 디렉터리 및 파일 제외)
-
09-06-2019 - |
문제
.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>
제휴하지 않습니다 StackOverflow