정규식을 사용하여 과 같은 문자열에서을 1.2.3
과 같이 추출하려고 시도하고 있습니다.MSBuild System.Text.RegularExpressions.Regex가 일치하지 않습니다.
나는 \d$
을 사용하면 충분하다고 생각하지만 정규 표현식을 사용하는 경우 다음과 같은 MSBuild를 파일에 작동하지 않습니다
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AssemblyVersion>1.5.0</AssemblyVersion>
</PropertyGroup>
<Target Name="TestXmlPeek">
<XmlPeek
Namespaces="<Namespace Prefix='msb' Uri='http://schemas.microsoft.com/developer/msbuild/2003'/>"
XmlInputPath="$(MSBuildProjectFile)"
Query="/msb:Project/msb:PropertyGroup/msb:AssemblyVersion/text()">
<Output TaskParameter="Result" ItemName="Peeked" />
</XmlPeek>
<Message Text="@(Peeked)"/>
<PropertyGroup>
<Out>$([System.Text.RegularExpressions.Regex]::Match(@(Peeked), `\d$`))</Out>
</PropertyGroup>
<Message Text="Input: [@(Peeked)] Output: [$(Out)]"/>
</Target>
</Project>
나는 다음과 같은 출력을 참조 TestXmlPeek 목표 실행하면 :
을TestXmlPeek:
1.5.0
Input: [1.5.0] Output: []
누군가 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?
(BTW : 나는 결국 내 버전 번호를 증가하기 위해 MSBuild에서 대상을 사용하고 싶습니다으로 나는이 일을하고 있습니다.)
편집
내가 MSBuild를 정규식이 작동하는지 확신 마치 다음과 같은 단순한 표현식을 사용하는 것처럼 전체 문자열과 일치하고 1.5.0
을 출력하는 것을 볼 수 있습니다.
<Out>$([System.Text.RegularExpressions.Regex]::Match(@(Peeked), `.*`))</Out>
'\'\ d $ \''를''\ d $ "'로 바꾸어 보았습니까? –
나는'with '를 바꾸려고 시도했지만 아무런 차이가 없다. – vegemite4me