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