我遇到有关System.Net.Http.dll 4.2.0.0版本的问题
这是我的设置-
Visual Studio 2017,15.8.7
面向.net 4.7.2的简单控制台应用程序
当我创建一个新项目时,默认情况下它具有对System.Net.Http.dll
的引用,并且位置是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Net.Http.dll
。
但是当我执行代码时,
class Program
{
static void Main(string[] args)
{
var assembly = GetAssemblyNameContainingType(typeof(HttpClient).FullName);
Console.WriteLine("Path: " + assembly.Location);
Console.WriteLine("Version: " + assembly.GetName().Version);
Console.ReadKey();
}
public static Assembly GetAssemblyNameContainingType(String typeName)
{
foreach (Assembly currentassembly in AppDomain.CurrentDomain.GetAssemblies())
{
Type t = currentassembly.GetType(typeName, false, true);
if (t != null)
{ return currentassembly; }
}
return null;
}
}
我得到以下输出
Path: C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll
Version: 4.0.0.0
似乎从GAC而不是System.Net.Http.dll
文件夹中引用了Programs Files (x86)
。
我特别需要参考4.2.0.0-因为它以{Newtonsoft json可以序列化和反序列化而不会出错的方式}处理HttpRequestException
的序列化。
我阅读了很多关于其他人遇到System.Net.Http.dll
问题的帖子,其中许多人说这是在Visual Studio 2017 15.8中解决的,并且不必添加对{{1 }}的细节,应该让Visual Studio从框架中适当地引用它。
我想念什么吗? 我尝试了很多事情-
在项目属性中添加引用路径(C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.7.2)-没有帮助
使用C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.7.2 \ System.Net.Http.dll路径添加引用-没有帮助
复制本地-正确-没有帮助
特定版本-是-没有帮助
添加了绑定重定向-没有帮助。低于异常
System.Net.Http
System.BadImageFormatException:'无法加载文件或程序集'System.Net.Http,Version = 4.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。参考程序集不应该加载执行。它们只能在“仅反射”加载器上下文中加载。 (来自HRESULT的异常:0x80131058)'
项目属性中未选中的自动生成绑定重定向-没有帮助
未经检查的具有手动绑定重定向的自动生成绑定重定向-没有帮助
未选中的自动生成的绑定重定向和手动绑定重定向+复制本地-没有帮助
添加提示路径-没有帮助 C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework.NETFramework \ v4.7.2 \ System.Net.Http.dll
这是我的.csproj(原始的,经过上述所有更改后已还原)
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>