I've used PO to manage a .Net project after .resx files started getting out of hand. I used it "as an extraction format like XLIFF" (see Yves comment). Our existing .resx files were exported/merged once into one .po file per language, which then became our authoritative language files from which all the resx files would be automatically generated.
The projects I'm on aren't ASP so I don't know about the package mentioned by mcw0933, but Mono's implementation of resgen.exe has some simple po <=> resx conversion ability. However, in order to preserve existing comments and automatically add the original text as extra comments, I extended mono's conversion tool to the point where the one I use is basically rewritten.
I put the extended .po <=> .resx converter on github.
As for choosing .po to manage the translations of a C# project, .po is simple and friendly but there are some inconveniences from using it in a way that slightly differs from its original use in gettext, and I don't have the experience to say whether it was a better choice than xliff, but being able to manage translations and automate tasks was much better than dealing with the resx files, like we had been in the past.
Minor inconveniences from using PO a little differently to its intent:
- Because gettext uses msgid to double as the field to store the original untranslated string in, I had to make resgenEx archive the original translation string into an attached comment instead of a field designed for that purpose.
- Some tools assume the msgid will contain the original english translation (instead of just an ID string), which could mean the automatic error checking option of that tool isn't very useful, or it might mean something that makes you choose a different tool, etc. Most tools make no assumption though.
- Some .po tools like \n instead of \r\n
The project I originally wrote resgenEx for had two .resx files and one .isl file for every supported language, but soon I'll need to manage all the translations for a .Net project that has multiple resx files for every class in the code. When this happens I'll decide whether I should keep using .po or whether I should use xliff or something else. If I keep using .po then I'll clean up resgenEx and probably need to add more features, like the ability to automatically add assembly name and class name prefixes to the msgids.