2016-07-16 109 views
33

我已經將項目複製到僅使用Visual Studio 2015社區和SQL的乾淨Windows 10計算機安裝了Server 2016 Express。除了安裝了Windows 10和VS2015或SQL Server的版本之外,沒有安裝其他框架版本。無法加載文件或程序集「System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」

當我嘗試啓動的WebAPI項目中,我得到的消息:

無法加載文件或程序集「System.Net.Http,版本= 4.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a」或其依賴之一。該系統找不到指定的文件。

該項目的套餐包括:

<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" /> 
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" /> 
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" /> 
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" /> 
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" /> 

建設項目,.NET框架4.6.1,System.Net.Http文件後未在bin文件夾中找到。

該文件的路徑指向:

C:\ Program Files文件(x86)的\參考大會\微軟\ Framework.NETFramework \ v4.6.1 \ System.Net.Http.dll

C:到System.Net.Http.Formatting

該文件的路徑\開發\ MyApp的\包\ Microsoft.AspNet.WebApi.Client.5.2.3 \ LIB \ net45 \ System.Net.Http.Formatting.dll

整個項目的目標應該是4.5.1還是有另一種方法來引用正確的程序集?

+0

你試過從NuGet包重新安裝網絡API上面? –

+0

相關:http://stackoverflow.com/questions/19491860/could-not-load-file-or-assembly-system-web-http-4-0-0-after-update-fromtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt後橋嘗試 – 2016-07-16 07:59:51

+0

嘗試所有在這個問題上都提出了答案。目前沒有任何工作。我也爲我使用的所有nuget軟件包運行了'update-package xxx -reinstall'。它也不起作用。 –

回答

67

更改我的web.config(或app.config)中的綁定信息 - 當我的視圖中出現「黑客」時,允許您在NuGet軟件包更新重新打包應用程序並向您提供系統後, .Net.Http錯誤。

設置NEWVERSION =「4.0.0.0」

<dependentAssembly> 
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" /> 
</dependentAssembly> 
+1

我部署到Azure,一次沒有問題,然後15分鐘後,一個連續部署給了我在OP中聲明的確切錯誤,並用服務器上的web.config調整了我的問題。但是,我不知道爲什麼它第一次工作。我沒有弄亂部署之間的依賴關係。 – bkwdesign

+1

解決了我的問題,非常感謝,1000豎起大拇指 已經有一段時間了,試圖解決這個問題 – user1505015

+0

在嘗試幾乎所有我能想到的事情之後,這對我也有效。 –

3

我有同樣的問題,只有這樣,我是如何解決它是添加bindingRedirect到app.confing如何寫@ tripletdad99。

但是,如果你有更多的項目的解決方案真的吸手每個項目更新(有時也更新一些nuget包後,你需要再次做)。這就是爲什麼我寫了簡單的PowerShell腳本,如果所有的應用程序配置。

param(
    [string]$SourceDirectory, 
    [string]$Package, 
    [string]$OldVersion, 
    [string]$NewVersion 
) 

Write-Host "Start fixing app.config in $sourceDirectory" 
Write-Host "$Package set oldVersion to $OldVersion and newVersion $NewVersion" 
Write-Host "Search app.config files.." 
[array]$files = get-childitem $sourceDirectory -Include app.config App.config -Recurse | select -expand FullName 
foreach ($file in $files) 
{ 
    Write-Host $file 
    $xml = [xml](Get-Content $file) 
    $daNodes = $xml.configuration.runtime.assemblyBinding.dependentAssembly 
    foreach($node in $daNodes) 
    { 
     if($node.assemblyIdentity.name -eq $package) 
     { 
      $updateNode = $node.bindingRedirect 
      $updateNode.oldVersion = $OldVersion 
      $updateNode.newVersion =$NewVersion 
      Write-Host "Fix" 
     } 
    } 
    $xml.Save($file) 
} 

Write-Host "Done" 

示例如何使用:

./scripts/FixAppConfig.ps1 -SourceDirectory "C:\project-folder" -Package "System.Net.Http" -OldVersion "0.0.0.0-4.3.2.0" -NewVersion "4.0.0.0" 

也許它並不完美,也將是更好的,如果有人將其鏈接到預建任務。

7

在我的其中一個項目中有一個包含更高版本System.Net.Http的nuget包。並在我的啓動項目中引用System.Net.Http v 4.0。0,我剛在我的啓動項目中安裝了System.Net.Http nuget package,問題解決了

0

檢查.net框架版本。
我原來的.net框架是舊版本。
當我安裝.net框架4.6後,這個問題自動解決。

1

我有這個,但是,這是因爲我添加了一個NuGet包,它已經更新了綁定重定向。一旦我刪除了包裹,重定向仍然存在。我刪除了所有這些,然後運行update-package -reinstall。這添加了正確的重定向。

4

按照以下步驟,

  1. 更新視覺工作室最新版本(它很重要)
  2. 從web.config中刪除所有綁定重定向
  3. 將其添加到csproj文件:

<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>

  1. Build。
  2. 在bin文件夾中,應該有一個(WebAppName).dll.config文件。
  3. 它應該有重定向。這些複製到web.config
  4. 取下的csproj文件再次剪斷
  5. 它應該工作
相關問題