我创建了一个nuget包,供我的组织内部使用。我们称它为Doodle套件。 Doodle套件取决于Google AdWords套件。 Google Adwords软件包似乎已经为System.Net.Http引入了一个nuget软件包。
我完成了Doodle软件包的构建,将其推送到我们的服务器上,然后将其包含在我的项目中。一切都构建良好,但是当我运行该应用程序时,一旦开始使用Doodle包,就会引发异常。
Could not load file or assembly 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
在谷歌搜索中,我发现从我的app.config文件中删除该条目可以解决此问题:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
但是这种破解远非理想。似乎重新创建了该行(看似随机),这再次破坏了应用程序。最重要的是,这似乎应该在Doodle软件包级别进行修复,而不是依靠软件包的客户端来解决。
为此,我尝试了Doodle套件中的许多东西,但行为没有变化:
我也尝试过在客户端级别删除System.Net.Http包,或者也在那里安装其他版本。唯一有效的方法(并且只是暂时的)是删除App.Config中的dependentAssembly条目。
我知道您可以关闭自动绑定重定向(https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection)。但这感觉有点核,再次依赖于客户端而不是Doodle Package作者。
要提及的另一件事是,现在构成Doodle包的代码以前与我当前的项目是同一解决方案的一部分。在将此代码迁移到其自己的nuget包中之前,一切正常且繁琐。
我对nuget软件包的创建还很陌生,但我对此感到很沮丧。使用.Net 4.5.2,当前无法升级。有人有什么想法吗?