2012-08-28 3 views
1

저는 현재 Visual Studio 2012로 프로젝트를 옮기고 있으며, 너겟을 사용하기 시작합니다. 그래서 nunit 라이브러리 대신 "NUnit Runners"Nuget 패키지를 사용하겠습니다.MSBuild - 와일드 카드로 속성을 만드시겠습니까?

nuget은 패키지 버전으로 폴더를 생성하는 문제가 있습니다. 예를 들어, NUnit Runners는 다음 폴더 안에 있습니다. src \ packages \ NUnit.Runners.2.6.1 \

지금까지 Nunit은 lib \ NUnit 폴더 안에있었습니다. 내가 업데이트해야 할 것이라고

<PropertyGroup> 
    <NUnitFolder>$(MSBuildProjectDirectory)\lib\NUnit</NUnitFolder> 
</PropertyGroup> 
<NUnit Assemblies="..." ToolPath="$(NUnitFolder)" /> 

하지만 내 msbuild를 작업 내부 버전 번호를 지정하고 싶지 않습니다 그래서, 내 MSBuild를 파일 내부에, 나는 경로를 지정하여 테스트를 실행했다 NUnit.Runners가 업데이트 될 때마다

나는 CreateProperty로 놀려고했지만 와일드 카드를 허용하지 않는 것 같습니다. 또한 ItemGroup을 사용해 보았지만 폴더가 아닌 파일 목록에서 작동합니다.

답변

1

결국, 와일드 카드로 속성을 만들려고 시도하는 대신, 필자의 경우에는 packages.config 파일에서 NUnit.Runners의 버전을 검색했습니다.

<Target Name="GetNUnitFolder"> 
    <!-- Retrieves the version of NUnit.Runners from the solution's packages.config file --> 
    <XmlRead Namespace="" 
      XPath="packages/package[@id='NUnit.Runners']/@version" 
      XmlFileName="$(MSBuildProjectDirectory)\src\.nuget\packages.config"> 
     <Output TaskParameter="Value" PropertyName="NUnitVersion" /> 
    </XmlRead> 

    <CreateProperty Value="$(MSBuildProjectDirectory)\src\packages\NUnit.Runners.$(NUnitVersion)\tools"> 
     <Output TaskParameter="Value" PropertyName="NUnitFolder" />  
    </CreateProperty> 
</Target> 

참고 :

내가 지금이 같은 목표를 가지고 XmlRead을 사용할 수 있도록, 당신은 MSBuildCommunityTasks이 필요합니다.

일단 버전이 생기면 NUnitFolder 속성을 다시 작성합니다.

관련 문제