2011-02-22 43 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) { 
    ... 
};