首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Services c#中的AssemblyResolve

Windows Services c#中的AssemblyResolve
EN

Stack Overflow用户
提问于 2013-03-28 17:37:18
回答 1查看 569关注 0票数 0

我有一个问题,我已经在一个普通的应用程序中用普通的AssemblyResolve方式解决了这个问题,那就是创建一个事件,比如

代码语言:javascript
复制
AppDomain.CurrentDomain.AssemblyResolve += EmbeddedAssemblyResolver;

EmbeddedAssemblyResolver看起来像什么

代码语言:javascript
复制
private static Assembly EmbeddedAssemblyResolver(object sender, ResolveEventArgs args)
    {
            String resourceName = Assembly.GetExecutingAssembly().FullName.Split(',').First() + "." + new AssemblyName(args.Name).Name + ".dll";
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
            {
                if (stream != null)
                {
                    Byte[] assemblyData = new Byte[stream.Length];
                    stream.Read(assemblyData, 0, assemblyData.Length);
                    return Assembly.Load(assemblyData);
                }
            }
        return null;
    }

在应用程序中,我将所有的dll都嵌入到应用程序中,然后用加载器加载它们。但我的服务不是这样的,我想以同样的方式工作,我在事件日志中得到的只是FileNotFound异常。我在Program.cs Main()方法中运行上面的代码,该方法除了加载要运行的服务和链接到无动态程序集之外,几乎没有其他功能。以下是代码

代码语言:javascript
复制
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[]
            {
                new ServiceLoader()
            };
        ServiceBase.Run(ServicesToRun);
    }

有人知道为什么解析器在应用程序中工作,而不是在windows服务中工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 19:11:35

看起来我是个笨蛋,我嵌入了错误的dll,我嵌入了正确的dll,一切都正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15678396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档