2011-02-22 39 views
1

我目前在由另一个应用程序以编程方式生成和编译的Winform中使用下面的代码,在此过程中,我将一个程序集嵌入到winform的资源中,以便它不需要外部参考。每当我们尝试解析一个程序集并从资源中加载它时,就会调用下面的代码。C#从内部资源加载程序集

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { 

    String resourceName = "AssemblyLoadingAndReflection." + 

    new AssemblyName(args.Name).Name + ".dll"; 

    using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { 

    Byte[] assemblyData = new Byte[stream.Length]; 

    stream.Read(assemblyData, 0, assemblyData.Length); 

    return Assembly.Load(assemblyData); 

    } 

}; 

然而,问题是,这似乎只在.NET 4中工作和理想,我需要这在.net中2这样的工作所创建的winform可以被发送到客户端,作为.NET 2框架是安装有Windows,但.net 4不是。我怎么能在.net 2中实现相同的结果?

+1

会发生什么事,当你尝试在.NET 2? – 2011-02-22 22:59:38

+2

不要让我们猜测.NET 2.0出了什么问题 – 2011-02-22 23:01:14

+0

代码不会编译它,它会在右括号和=>所在的位置引发错误。 – 2011-02-22 23:03:13

回答

1

的lambda语法不是C#支持2.使用

AppDomain.CurrentDomain.AssemblyResolve += delegate(object sender, AssemblyResolveEventArgs args) { 
    ... 
};