如何简化MSBuild目标? $(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::替换(“%(ProtocCompile.RelativeDir)”,“\.\.[/\\]',”)
这是目标文件的一部分。如何简化此代码?如何减少下面字符串的重复如何简化MSBuild目标? $(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::替换(“%(ProtocCompile.RelativeDir)”,“\.\.[/\\]',”),msbuild,Msbuild,这是目标文件的一部分。如何简化此代码?如何减少下面字符串的重复 $(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::替换('%(ProtocCompile.RelativeDir)'.\.\.[/\\]','') 因为您已经为该值指定了如下属性: <PropertyGroup> <protooutdir>$(IntermediateOutputPath)$([System.Text.
$(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::替换('%(ProtocCompile.RelativeDir)'.\.\.[/\\]','')
因为您已经为该值指定了如下属性:
<PropertyGroup>
<protooutdir>$(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::Replace('%(ProtocCompile.RelativeDir)','\.\.[/\\]',''))</protooutdir>
</PropertyGroup>
$(IntermediateOutputPath)$([System.Text.RegularExpressions.Regex]::替换(“%(ProtocCompile.RelativeDir)”,“\.\.[/\\]',”)
您可以使用属性$(protooutdir)替换对该字符串的引用,如下所示:
及
谢谢。我认为$(protooutdir)可以在的范围内访问。是否所有属性和项都存在于全局范围内?如何修复属性“protooutdir”和属性“Outputs”之间的重复?我认为,如果在其他目标之前调用ProtobufCompile目标,那么其他目标将能够访问它。但是,您始终可以在目标之外定义protooutdir属性,使其成为全局属性。
<CreateItem Include="$(protooutdir)%(ProtocCompile.Filename).cs">
<Delete Files="$(protooutdir)%(ProtocCompile.Filename).cs" />