In the stackoverflow podcast #61 , one of the main developers, Miguel de Icaza, states that mono is ready for production and says it is used being used in production. They also mention a visual studio plugin in the podcast that helps make sure the application is ready for Mono. In this stackoverflow post, they feel mono is ready for production as well.
I have never heard such claims made about Wine for .NET. So I would go with Mono.
Given the fact that Mono is able to run the application natively, I'd go for Mono. Support-wise, this is probably the better option, too. Otoh, if the .Net application uses Microsoft .Net specific parts of the specs (the patented stuff there is so much commotion about), you have no other choice but to use Wine. I don't even know whether that is possible though.
Is there a reason it has to be one of those two? Both are relatively mature. But it depends on the application, so you'd have to actually install and configure them with the application in question to see what the performance and compatibility is for each. Mono may run just hunky dory for most things but your application may have that one bit of functionality or find that one glitch that suddenly makes it crawl or crash. Ditto for Wine.
I'd explore virtualization as a possible solution as well; running the app in Virtualbox on a workstation, or VMWare ESXi or Xen on appropriate systems in a "native" environment will ensure compatibility (if it's a workstation application you could even run it in a seamless mode so it looks like just another application).
If you can give some background on the application in question it may help.
Given that Mono is a Novell project and Novell owns SUSE, you can count on good performance and support for Mono via OpenSUSE. Based on my experiences, Mono does a very good job implementing the CLR with a couple of library exceptions. As there are fewer layers of abstraction between running .NET code via Mono than running anything Windows-based via WINE, I would definitely use Mono.
One question I would have, however, is whether this is a custom app or a prepackaged app. If the former, it will be relatively easy to ensure full Mono compatibility (and you may want to build the app using MonoDevelop to get a heads-up although apps built with Visual Studio should run just fine). If the latter, you may want to see whether it has a history with Mono (some things, like Telerik, are certified to run well via Mono) or whether it is likely to use library (such as the MS DirectoryService pieces) that could present issues.
MoMa is a tool you can use to test if an application would run under Mono and, if not, highlight the areas causing problems. MoMa works on both Windows and Linux and is very easy to use.
I have only used it once, but it was an easy way to see if an application would run or not.
In the stackoverflow podcast #61 , one of the main developers, Miguel de Icaza, states that mono is ready for production and says it is used being used in production. They also mention a visual studio plugin in the podcast that helps make sure the application is ready for Mono. In this stackoverflow post, they feel mono is ready for production as well.
I have never heard such claims made about Wine for .NET. So I would go with Mono.
The base install for Wine doesn't have a .net runtime so I'd go with Mono.
Given the fact that Mono is able to run the application natively, I'd go for Mono. Support-wise, this is probably the better option, too. Otoh, if the .Net application uses Microsoft .Net specific parts of the specs (the patented stuff there is so much commotion about), you have no other choice but to use Wine. I don't even know whether that is possible though.
Is there a reason it has to be one of those two? Both are relatively mature. But it depends on the application, so you'd have to actually install and configure them with the application in question to see what the performance and compatibility is for each. Mono may run just hunky dory for most things but your application may have that one bit of functionality or find that one glitch that suddenly makes it crawl or crash. Ditto for Wine.
I'd explore virtualization as a possible solution as well; running the app in Virtualbox on a workstation, or VMWare ESXi or Xen on appropriate systems in a "native" environment will ensure compatibility (if it's a workstation application you could even run it in a seamless mode so it looks like just another application).
If you can give some background on the application in question it may help.
Given that Mono is a Novell project and Novell owns SUSE, you can count on good performance and support for Mono via OpenSUSE. Based on my experiences, Mono does a very good job implementing the CLR with a couple of library exceptions. As there are fewer layers of abstraction between running .NET code via Mono than running anything Windows-based via WINE, I would definitely use Mono.
One question I would have, however, is whether this is a custom app or a prepackaged app. If the former, it will be relatively easy to ensure full Mono compatibility (and you may want to build the app using MonoDevelop to get a heads-up although apps built with Visual Studio should run just fine). If the latter, you may want to see whether it has a history with Mono (some things, like Telerik, are certified to run well via Mono) or whether it is likely to use library (such as the MS DirectoryService pieces) that could present issues.
Slightly off-topic, but try taking a look at the Mono Migration Analyzer, MoMa.
MoMa is a tool you can use to test if an application would run under Mono and, if not, highlight the areas causing problems. MoMa works on both Windows and Linux and is very easy to use.
I have only used it once, but it was an easy way to see if an application would run or not.