我有一个问题,我已经在一个普通的应用程序中用普通的AssemblyResolve方式解决了这个问题,那就是创建一个事件,比如
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;
}在应用程序中,我将所有的dll都嵌入到应用程序中,然后用加载器加载它们。但我的服务不是这样的,我想以同样的方式工作,我在事件日志中得到的只是FileNotFound异常。我在Program.cs Main()方法中运行上面的代码,该方法除了加载要运行的服务和链接到无动态程序集之外,几乎没有其他功能。以下是代码
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new ServiceLoader()
};
ServiceBase.Run(ServicesToRun);
}有人知道为什么解析器在应用程序中工作,而不是在windows服务中工作吗?
发布于 2013-03-28 19:11:35
看起来我是个笨蛋,我嵌入了错误的dll,我嵌入了正确的dll,一切都正常。
https://stackoverflow.com/questions/15678396
复制相似问题