What are the major risks vs. benefits of using VS2

2019-02-19 06:48发布

问题:

I'd like to use Visual Studio Async CTP (Version 3) for developing and testing in VS2010 SP1 on Windows XP SP3 mainly because my clients (as well as I) on Windows XP SP3. Ghere is a related discussion on MSDN forum: If I target .net 4.0 but run on a machine that has .net 4.5 will .net 4.0 WPF bugs still be there?

Though, the NOTE ON "AS IS" LICENSE tells:

While the Async CTP license does not prevent you using it at your own risk in production environments, we advise you not to. The goal of this CTP is solely to gather feedback on our intended async design. We did not design or build it to be used in production environments, and did not test it as thoroughly as is needed for use in production environments, and we believe it has too many flaws to be fit for use in production environments. We gratefully appreciate feedback on the Async CTP, but we do not plan to make any fixes to the Async CTP itself: the fixes we make will only appear in the eventual supported released product

How serious are those flaws and bugs, being abandoned in Visual Studio Async CTP (Version 3) and what are the possible other consideration that I should take into account which can force me to change my decision?

The main reasons of asking are that:

  • I did not follow much anything about C#/.NET 4.5 VS2012 topics (due to sticking to Windows XP SP3, .NET 4.0 and VS2010) and I need to reduce the time of bumping into critical issues;
  • I have never before been in a situation when I should probably follow the lists of bug fixes (instead of specific isolated issue on a by-need basis)
    Do I really need now, for this case?

The main question:
What are the araes/possibilities that the unsupported flaws will not have easy workarounds in .NET/C# 4.0 in VS2010, Windows XP SP3 and those that can outweigh the benefits of using async/await

The asnwer to @DanPuzey's comment:

The application is based on TPL, WPF dealing with asynchronously coming from the internet (stock exchange) data flows. I have never before needed to care that I would be left with unsupported docs (samples), flaws and bugs. I probably will not be able to ask about them since they will not be reproducible by MSFT support as well as by others. I'd like to estimate the risks vs. benefits of using unsupported extensions

Are the main differences, flaws, bugs and risks infinite and cannot be enumerated? At all?

Let me cite from download page:

"Includes a new EULA for production use. Note - This license does not constitute encouragement for you to use the CTP for your production code. The CTP remains an unsupported and use-at-your-own-risk Technology Preview. However, we’ve received many requests from developers to use the CTP for production code, and so have changed the license to allow that"

The answer to @CodesInChaos' comment:

This is not the option as it was mentioned in the beginning of my question with reference to preventer link description here discussion. One cannot develop and test .NET 4.0 app from VS2012 or machine having .NET 4.5. It is impossible to install VS2012 or .NET4.5 on Windows XP. My experience (tried to install apps from other vendors) is that mentioned by you approach does not produce apps running on Windows XP

回答1:

I second @CodesInChaos' recommendation that you develop using VS2012. I use VS2012 on Windows 7 to develop .NET 4 apps running on Windows XP, and it works fine. The only caveat is that you can't debug on .NET 4 (you actually run on the .NET 4.5 runtime), but for 99% of the cases that doesn't matter.

I did use Async CTP in production; I considered it surprisingly stable for a CTP. That said, there are some known bugs. Most notable was the ordering of operations around await expressions. So follow the guideline of only having one await per statement, and make the await expression your top-level expression, e.g.:

var result = await ...;

I believe Jon Skeet also uncovered some more obscure bugs during his eduasync series.

There is no list of Async CTP bugs that have been fixed, or that still exist (in Microsoft.Bcl.Async). There may be some list inside Microsoft, but no one else knows it.

The application is based on TPL, WPF dealing with asynchronously coming from the internet (stock exchange) data flows.

In that case, consider Rx. Rx is fully supported on .NET 4, though I believe it does require VS2012 for development.