C# 引用二进制程序集而不是DLL可以吗

C# 引用二进制程序集而不是DLL可以吗,c#,asp.net,reference,C#,Asp.net,Reference,我继承了一个具有两个解决方案的遗留应用程序。一个解决方案是windows窗体(UI)应用程序,另一个是windows服务 windows服务解决方案引用用户界面exe,这是我发现应用程序中已经存在的实现 但在运行windows服务时,我收到以下错误: …发布服务主循环失败,无法加载文件或程序集 'xxx.xxx.xxx.xxx,版本=1.0.0.0, 区域性=中性,PublicKeyToken=abcc533bcb766348'或其 依赖关系。试图加载带有错误代码的程序 格式 我最初的任务是将此

我继承了一个具有两个解决方案的遗留应用程序。一个解决方案是windows窗体(UI)应用程序,另一个是windows服务

windows服务解决方案引用用户界面exe,这是我发现应用程序中已经存在的实现

但在运行windows服务时,我收到以下错误:

…发布服务主循环失败,无法加载文件或程序集 'xxx.xxx.xxx.xxx,版本=1.0.0.0, 区域性=中性,PublicKeyToken=abcc533bcb766348'或其 依赖关系。试图加载带有错误代码的程序 格式

我最初的任务是将此解决方案从.Net 3.5版升级到.Net 4.5版,我成功地做到了这一点,但此引用给我带来了一些问题

有人能教我从C#引用.exe二进制文件的效果吗。我无法更改引用到类库的解决方案,因为它具有使用.Net C#Windows窗体工具构建的用户界面,因此其输出类型为“Windows应用程序”


我们非常感谢您的任何帮助。谢谢

引用EXE程序集或DLL程序集在.NET中没有什么区别,它们都是程序集,.NET可以毫无问题地处理它们


您案例中的问题似乎是平台构建和运行的不兼容:32位与64位。该项目可能是为64位构建的,而您正试图在32位系统上运行。

引用EXE程序集或DLL程序集在.NET中没有区别,它们都是程序集,.NET可以毫无问题地处理它们


您案例中的问题似乎是平台构建和运行的不兼容:32位与64位。该项目可能是为64位构建的,而您正试图在32位系统上运行。

为什么不将服务中使用的代码从Winforms应用程序提取到类库中?然后从winforms和服务项目中引用该类库为什么不将服务中使用的代码从winforms应用程序提取到类库中?然后参考winforms和service Projects中的类库感谢您的快速响应,我现在就去确认一下,但据我所知,我在这两个解决方案上都显式构建了在32位上运行的所有内容(即平台目标=x86)也许您正在引用一个64位的第三方引用?重新检查后,我注意到另一个地方,它被设置为“任何CPU”的编译。我马上就要做最新的测试,然后再给你回复。再次感谢您的帮助,非常感谢。当使用任何CPU时,执行一个程序集的机器将执行64位(如果能够执行64位),而另一个应用程序设置为显式32位,这可能会导致问题。但这绝对不是第三方程序集造成的,因为除了核心的.Net dll之外,所有dll都在内部。但该过程将决定使用哪个平台,所有CPU程序集都可以自行调整以符合x86和x86-64。感谢您的快速响应,我现在就去确认,但据我所知,我明确地在两个解决方案上构建了在32位(即平台目标=x86)上运行的所有内容,也许您正在引用一个64位的第三方引用?重新检查后,我注意到另一个地方,它被设置为“任何CPU”的编译。我马上就要做最新的测试,然后再给你回复。再次感谢您的帮助,非常感谢。当使用任何CPU时,执行一个程序集的机器将执行64位(如果能够执行64位),而另一个应用程序设置为显式32位,这可能会导致问题。但这肯定不是第三方程序集造成的,因为除了核心的.Net dll之外,所有dll都在内部。但该过程将决定使用哪个平台,并且所有CPU程序集都可以自行调整以符合x86和x86-64。