C# 是否可以嵌入.XmlSerializers.dll程序集?

C# 是否可以嵌入.XmlSerializers.dll程序集?,c#,.net,vb.net,xml-serialization,sgen,C#,.net,Vb.net,Xml Serialization,Sgen,SGEN生成的.XmlSerializers.dll程序集是否可以嵌入到最终的可执行文件中,并且仍然可以运行并提供性能提升?我认为dll本身不会受到性能影响。 只要通过AssemblyResolve需要dll,它就会加载到内存中 在此之后,无论dll是在磁盘上找到的还是从exe中抓取的,由于dll位于内存中,因此应该没有任何性能差异 您可以按照此stackoverflow应答中提供的指令将dll嵌入到项目中 至于性能,您可以使用秒表,创建一个循环,将元素序列化和反序列化X次,然后使用两种方法(一

SGEN生成的.XmlSerializers.dll程序集是否可以嵌入到最终的可执行文件中,并且仍然可以运行并提供性能提升?

我认为dll本身不会受到性能影响。 只要通过AssemblyResolve需要dll,它就会加载到内存中

在此之后,无论dll是在磁盘上找到的还是从exe中抓取的,由于dll位于内存中,因此应该没有任何性能差异

您可以按照此stackoverflow应答中提供的指令将dll嵌入到项目中

至于性能,您可以使用秒表,创建一个循环,将元素序列化和反序列化X次,然后使用两种方法(一种是磁盘上的dll,另一种是嵌入的dll)测量执行时间,以确认或拒绝此答案的可用性

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    Thread.Sleep(10000);
    stopWatch.Stop();
    // Get the elapsed time as a TimeSpan value.
    TimeSpan ts = stopWatch.Elapsed;

    // Format and display the TimeSpan value. 
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
        ts.Hours, ts.Minutes, ts.Seconds,
        ts.Milliseconds / 10);
    Console.WriteLine("RunTime " + elapsedTime);
    }
}

上面秒表示例的源代码:

我想不出它不起作用的任何原因,它们像往常一样使用Assembly.Load()加载,因此AppDomain.AssemblyResolve将被触发。你试过了吗?到底出了什么问题?问题是我不知道有什么简单的方法可以确定它是否提供了性能提升(因为它不是很重要)。另外,我听说.NET可能正在寻找实际的.DLL文件,如果它不在那里,它会动态生成序列化程序-这将使它们嵌入无用。