在这段代码中:
private async void button1_Click(object sender, EventArgs e) {
try {
await Task.WhenAll(DoLongThingAsyncEx1(), DoLongThingAsyncEx2());
}
catch (Exception ex) {
// Expect AggregateException, but got InvalidTimeZoneException
}
}
Task DoLongThingAsyncEx1() {
return Task.Run(() => { throw new InvalidTimeZoneException(); });
}
Task DoLongThingAsyncEx2() {
return Task.Run(() => { throw new InvalidOperation();});
}
Run Code Online (Sandbox Code Playgroud)
我期望WhenAll创建并抛出一个AggregateException,因为至少有一个等待抛出异常的任务.相反,我正在收回其中一个任务抛出的单个异常.
难道WhenAll不总是创造AggregateException?
在哪里可以找到一些官方说明,kb文章或其他描述Visual Studio 2010 C/C++运行时链接和部署策略更改的文档?
在Visual Studio 2008(使用VC90运行时)下,清单嵌入在本机映像中,运行时库部署为并行程序集(WinSxS).使用VS 2008 SP1重建本机exe或库时,这会导致问题,因为嵌入式清单需要更新版本的C++运行时.
对于VS 2010和MSVCR100运行时版本,策略似乎已完全更改.
这似乎是政策的一个重大变化,从SxS部署的回溯和我们在VS 2008下的清单依赖性.任何人都可以更好地了解变化的内容,并且可能指向一些文档,描述这些变化的自述文件或博客文章,动机和相关影响?
它认为这种方式更好 - 强大的版本清单和SxS部署是一场噩梦 - 但我对VS 2010中这些意外且看似无证的变化感到惊讶.
额外问题:如何在VS 2010下编译我的C++/CLI库以链接到msvcr100_clr0400.dll而不是msvcr100.dll?这个想法是C++/CLI程序集应该运行时没有.NET 4安装的依赖项(没有静态链接).
从3.0版开始,.NET在C:\ Program Files\Reference Assemblies\Microsoft ....下安装了许多不同的"引用程序集",以支持不同的配置文件(比如.NET 3.5客户端配置文件,Silverlight配置文件).其中每个都是一个正确的.NET程序集,只包含元数据 - 没有IL代码 - 每个程序集都标有ReferenceAssemblyAttribute.元数据仅限于适用的配置文件下可用的那些类型和成员 - 这就是intellisense显示一组受限制的类型和成员的方式.在运行时不使用引用程序集.
我从这篇博文中了解到了一些情况.
我想为我的库创建和使用这样的引用程序集.
任何想法或指示我可以了解更多关于这一点将不胜感激.
更新:环顾四周,我看到.NET 3.0'引用程序集'确实有一些代码,并且引用程序集属性仅在.NET 4.0中添加.因此,新运行时的行为可能会有所改变.
为什么?对于我的Excel-DNA(http://exceldna.codeplex.com)加载项库,我通过将引用的程序集作为资源打包到.xll文件中来创建单文件.xll加载项.打包的程序集包括用户的加载项代码,以及Excel-DNA托管库(可能由用户的程序集引用).
这听起来相当复杂,但大部分时间都运行良好 - 加载项是一个小文件,所以没有安装分发问题.由于版本不同,我遇到(并非意外)问题 - 如果Excel-DNA托管库的旧版本作为文件,运行时将加载而不是打包的(我永远不会有机会干扰加载).
我希望为我的Excel-DNA管理部分制作一个参考程序集,用户在编译它们的加载项时可以指向它.但是如果他们在运行时错误地拥有了这个程序集的一个版本,那么运行时应该无法加载它,并让我有机会从资源加载真正的程序集.
如何检查用户是否有权启动/停止特定的Windows服务,而不实际停止或启动它?
问题不在于授予向用户重新启动服务的权限(例如,使用subinacl.exe):我想检查用户是否是管理员,或者是否已被授予重新启动服务的权限.
是否可以从中导出私钥CERTIFICATE SIGNING REQUEST?
我有一个CSR文件和一些CRT文件.现在我必须安装此证书.我该怎么做或是否需要一些其他文件才能安装此证书?
我正在用PCL创建一个Xamarin应用程序,我想在PCL中使用SQLite在平台特定项目中共享数据库代码.
我已经研究过Tasky Portable项目,他们使用抽象类来实现这个目标.我在实现这个方法时遇到了一些麻烦,这就是为什么我在寻找另一种在PCL中使用SQLite的解决方案.我偶然发现了一篇Xamarin Forms文章,他们使用SQLite PCL NuGet包在PCL中实现它.
由于我没有使用Xamarin Forms,这两种方法有什么区别?NuGet包解决方案是否也可用于在PCL中实现SQLite而无需使用Xamarin Forms?这个方法似乎比抽象类简单得多.
我正在尝试设置将用于Line(System.Windows.Shapes.Line)对象的WPF DataTemplate .
从默认的.NET 4 WPF应用程序,我将我的Window xaml设置为:
<Window x:Class="WpfTestDataTemplates.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type system:String}" >
<TextBlock>It's a string</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type Line}" >
<TextBlock>It's a line</TextBlock>
</DataTemplate>
</Window.Resources>
<ListView ItemsSource="{Binding MyItems}" />
</Window>
Run Code Online (Sandbox Code Playgroud)
而背后的代码是:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Shapes;
namespace WpfTestDataTemplates
{
public partial class MainWindow : Window
{
public List<object> MyItems {get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
MyItems = new List<object>();
MyItems.Add("The first string");
MyItems.Add(new …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
assemblies ×1
asynchronous ×1
c++-cli ×1
certificate ×1
datatemplate ×1
exception ×1
msvcr100.dll ×1
openssl ×1
permissions ×1
sqlite ×1
ssl ×1
tap ×1
winsxs ×1
wpf ×1
xamarin ×1