我正在针对Visual Studio版本15.7.6上的.NET版本4.6.2开发一个.NET应用程序。在我的本地计算机(Windows 10)和远程计算机(Windows Server 2012 R2)上,我检查了我是否具有相同版本的.NET:
PS> Get-ChildItem "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
Name Property
---- --------
1033 CBS : 1
Install : 1
Release : 461308
Servicing : 0
TargetVersion : 4.0.0
Version : 4.7.02556
该应用程序的解决方案经过结构设计,以使该应用程序的项目(例如A)是一个控制台应用程序,它依赖于一个类库(例如L)项目,该项目也以相同版本的.NET(即4.6)为目标。 2)。 A和L的App.Config
包含:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
实质上,项目L包含一些代码,这些代码利用PutAsJsonAsync()
上的扩展方法System.Net.Http.HttpClient
。依赖项Microsoft.AspNet.WebApi.Client
已通过Nuget添加到Project L中。现在,当通过Visual Studio或本地计算机上的命令行运行代码时,代码将按预期工作。但是,当通过命令行在远程计算机上启动程序(EXE)(并且所有依赖项(例如DLL)都在同一文件夹中)时,我得到了例外:
System.MissingMethodException: Method not found: 'System.Threading.Tasks.Task`1<System.Net.Http.HttpResponseMessage> System.Net.Http.HttpClientExtensions.PutAsJsonAsync(System.Net.Http.HttpClient, System.String, !!0)'.
我用ILSpy检查了EXE的依赖关系遍历,它肯定指向正确的程序集,并且(DLL)文件在与exe相同的文件夹中可用(存在)和可访问(权限)。
我想知道可能是什么问题以及如何解决该问题。