在远程计算机上运行.NET应用程序时MissingMethodException

时间:2018-08-07 00:54:07

标签: c# .net visual-studio debugging

我正在针对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相同的文件夹中可用(存在)和可访问(权限)。

我想知道可能是什么问题以及如何解决该问题。

0 个答案:

没有答案