在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上运行.Net 8程序
因为工作需要,要在客户的Windows Server 2008 R2上运行一个WinForm程序。在网上搜了下之前也有人成功运行过.Net Core 3、.Net 6的Asp.Net Core服务,遂直接拿.Net 8来写了。最后装了3个补丁包之后,也是成功运行。这篇笔记主要记录这3个补丁包。
Windows Server 2008 R2 SP1(KB976932)
这是个大补丁包,包含了很多更新,可以说是必装的。
链接
VC_redist.x64
是个MSVC的库。
链接
KB3063858
这个补丁解决的问题是.Net运行时调用一个Win32 API LoadLibraryExA function (libloaderapi.h)
来加载kernel.dll
时,路径的问题。
参见该函数的微软文档中关于参数dwFlags
的值LOAD_LIBRARY_SEARCH_SYSTEM32的说明:
Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008: 此值需要安装 KB2533623 。
也就是说本来为了解决这个问题是应该安装KB2533623补丁包的,但是该补丁包可能带来远程执行的安全漏洞,已经弃用了。好在辗转搜索后发现,KB3063858补丁也能解决问题。虽然这个补丁的名字是给Windows 7用的,但是因为两个系统的内核版本都是6.1,所以也可以用在Windows Server 2008 R2上。
链接