1
我有我在正常AssemblyResolve方式正常应用已经解决了一个问题,那就是创建一个事件如AssemblyResolve在Windows服务C#
AppDomain.CurrentDomain.AssemblyResolve += EmbeddedAssemblyResolver;
凡EmbeddedAssemblyResolver看起来像
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;
}
在应用程序中,所有groovy都可以工作,我将所有的dll嵌入到应用程序中,然后使用loader加载。但是对于我想以同样方式工作的服务,情况并非如此,我在事件日志中获得的所有内容都是FileNotFound异常。我在Program.cs的Main()方法中运行上面的代码,除了加载服务运行并链接到没有动态程序集外,该方法几乎没有其他任何东西。这里是代码
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new ServiceLoader()
};
ServiceBase.Run(ServicesToRun);
}
有谁知道为什么解析器在一个应用程序,但不是在Windows服务?
这对任何人都没有帮助,请删除您的问题。 – 2013-03-28 11:24:33