在Visual Studio 2015中,我打开了一个使用Visual Studio 2013创建的项目.重建此项目并看到以下警告:
The referenced component 'System.Runtime' could not be found.
Run Code Online (Sandbox Code Playgroud)
查看Solution Explorer中的References项,单击System.Runtime,Property窗口显示为空,如下所示:
在Visual Studio 2013中,它显示:
这个DLL确实存在于foler中:C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades
因此,Visual Studio 2013在构建项目时没有发出警告,但Visual Studio 2015确实如此.
这是一个错误还是我想念Visual Studio 2015中的一些东西?
为了使开发人员更容易编写基于Tasks的异步代码,.NET 4.5更改了未观察到的异常的默认异常行为.虽然未观察到的异常仍会导致引发UnobservedTaskException事件(不会这样做会发生重大变化),默认情况下进程不会崩溃.相反,无论事件处理程序是否观察到异常,异常将在引发事件后最终被吃掉.
但是我的实验结果与上述说法不符.以下是我的代码:
static void Main(string[] args)
{
DownloadAsync("http://an.invalid.url.com);
}
async static void DownloadAsync(string url)
{
using (var client = new System.Net.Http.HttpClient())
{
string text = await client.GetStringAsync(url);
Console.WriteLine("Downloaded {0} chars", text.Length);
}
}
Run Code Online (Sandbox Code Playgroud)
因为我传递一个无效的URL DownloadAsync()方法,调用HttpClient的GetStringAsync()方法会抛出一个expcetion,并且它的应用程序崩溃.
所以我的问题是:默认情况下,.NET 4.5中未观察到的异常是否仍然会崩溃应用程序?