我正在使用TopShelf和dotnet core 2框架开发一个Windows服务应用程序。为了创建它,我使用了Console App(.NET核心)模板。现在,要部署应用程序,我创建了一个发布配置文件以在本地执行。这是内容:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Configuration>Release</Configuration>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishDir>C:\Repos\Deployments\MassTransit.Consumer</PublishDir>
<Platform>Any CPU</Platform>
<SelfContained>true</SelfContained>
<_IsPortable>true</_IsPortable>
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
</PropertyGroup>
正如您所看到的,RuntineIdentifier是 win7-x64 ,根据documentation,这应该是在Windows Server 2008 R2中运行应用程序的正确选项。当我将应用程序部署到本地文件夹时,我可以在我的机器执行生成的.exe时运行它,但是当我尝试在Windows Server 2008 R2中运行它时,复制Windows服务器中本地文件夹的所有文件,我正在 badimageformatexception bad il format error :
在Windows服务器中安装 Dotnetcore.2.0.5-WindowsHosting 和 Dotnet-sdk-2.1.105-win64
仅仅是一个FYI,我在这个服务器的IIS下运行了一个web api core 2应用程序,如果我在cmd.exe中运行 dotnet --version ,它返回2.1.0.105,所以它识别出已安装dotnet核心
任何线索为什么控制台应用程序在Windows Server 2008 R2中运行它时会收到我的错误。我需要安装其他任何东西吗?或者,我是否需要在发布配置文件中更改某些内容?
我很确定Load.From
:
我正在使用该代码加载自定义库,这些库具有我需要在应用程序启动时注册的Autofac模块。