In MSBuild, can I use the String.Replace function on a MetaData item?

Those functions works in properties only (as I know). So create target which will perform operation throw batching.

Up vote 2 down vote favorite share g+ share fb share tw.

In MSBuild v4 I kbow I can use functions (like string. Replace) on Properties. But how can I use functions on Metadata?

I'd like to use the string. Replace function as below: '%(Filename). Replace(".

Config","")')" /> Unfortunately this outputs as (not quite what I was going for): log4net. Replace(". Config","");ajaxPro.

Replace(". Config","");appSettings. Replace(".

Config","");cachingConfiguration20. Replace(". Config","");cmsSiteConfiguration.

Replace(". Config","");dataProductsGraphConfiguration. Replace(".

Config","");ajaxPro. Replace(". Config","");appSettings.

Replace(". Config","");cachingConfiguration20. Replace(".

Config","");cmsSiteConfiguratio Any thoughts? Msbuild link|improve this question asked Feb 24 '11 at 9:58willem2,08211334 86% accept rate.

You might want to approach this as create a new item group from the original item group modifying the entries. A transform or a custom task if more control is needed could do this. – Brian Walker Feb 24 '11 at 16:57 Hi.

Did you solve this problem in the end? How? I have a similar issue: property definition does not work as Target has a file list as Input, not a single filename.

– superjos Nov 8 '11 at 10:05.

Those functions works in properties only (as I know). So create target which will perform operation throw batching: %(Files. Filename) $(OriginalFileName.

Replace(". Config","")) Do you really need in your example such kind of task? I mean there exists MSBuild Well-known Item Metadata EDIT: I should specify that this task processes all items in @(Files).

I did not know you could create a property based on another property. Very very useful! – willem Feb 24 '11 at 10:50 Is it solved your problem?

– Sergio Rykov Feb 24 '11 at 11:14 Afraid not :( Files. FileName is a collection, but $ModifiedFileName is only a single value in the end. I need the "Replace" to be run on every item in 'Files'.

– willem Feb 24 '11 at 11:40 1) It processes each item in @(Files). – Sergio Rykov Feb 24 '11 at 13:18 2) Do you mean that in metadata you store several values? Please, give an example of items you use.

– Sergio Rykov Feb 24 '11 at 13:19.

I don't think you can use functions directly with itemgroups and metadata (that would be easy) However you can use batching: Taking the ideas from this post: array-iteration I was trying to trim an itemgroup to send to a commandline tool (i needed to lose . Server off the filename) $(CurrentXmlFile. Replace('.

Server','')).

You can do this with a little bit of trickery: $(System. String::Copy('%(Filename)'). Replace('config','')) Basically, we call the static method 'Copy' to create a new string (for some reason it doesn't like it if you just try $('%(Filename)'.

Replace('. Config',''))), then call the replace function on the string. The full text should look like this: '$(System.

String::Copy("%(Filename)"). Replace(". Config",""))').

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions