NuGet Server无法找到NuGet.Core DLL

时间:2011-07-15 12:12:35

标签: nuget

我一直在尝试启动并运行本地版本的NuGet服务器。我创建了一个空网站,并通过VS2010中的NuGet安装了NuGet服务器包。当我运行它时,我会得到“主页”,但是当点击包裹Feed时,我得到了这个:

  

服务器在处理请求时遇到错误。例外   消息是'无法加载文件或程序集'NuGet.Core,   Version = 1.4.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖项。定位程序集的清单定义   与装配参考不匹配。 (HRESULT的例外情况:   0x80131040)”。请参阅服务器日志以获取更多详异常堆栈   追踪是:

     

at NuGet.Server.DataServices.Packages.CreateDataSource()at   System.Data.Services.DataService 1.CreateDataSourceInstance() at System.Data.Services.DataService 1.CreateProvider()at   System.Data.Services.DataService 1.HandleRequest() at System.Data.Services.DataService 1.ProcessRequestForMessage(流   messageBody)在SyncInvokeProcessRequestForMessage(Object,Object [],   对象[])在   System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象   实例,对象[]输入,对象[]&输出)   System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&安培;   rpc)at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean   isOperationContextSet)

包管理器下拉的Nuget.Core版本是1.4.20615.9012。我无法在解决方案的任何地方看到对1.4.0.0的任何引用。

我尝试添加程序集绑定重定向来处理此问题:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="NuGet.Core" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-1.4.0.0" newVersion="1.4.20615.9012"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

但这只是将错误更改为

  

服务器在处理请求时遇到错误。例外   消息是'无法加载文件或程序集'NuGet.Core,   版本= 1.4.20615.9012,文化=中立,   PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)'。请参阅服务器日志   更多细节。

DLL肯定在bin文件夹中,就是那个版本。我已经尝试将引用的“特定版本”属性更改为False,但这没有任何区别。

有没有人对我接下来要尝试的内容有任何建议?


更新

在选择项目文件时,我发现了这个:

<Reference Include="NuGet.Core, Version=1.4.20609.9012, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <HintPath>..\packages\NuGet.Core.1.4.20615.9012\lib\net40\NuGet.Core.dll</HintPath>
    <SpecificVersion>False</SpecificVersion>
</Reference>

1.4.20609.9012似乎没有任何匹配,所以我不确定它来自哪里。但是,更新我对此的绑定似乎有效:

<dependentAssembly>
    <assemblyIdentity name="NuGet.Core" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-1.4.0.0" newVersion="1.4.20609.9012"/>
</dependentAssembly>

虽然,老实说,我已经通过运气得到了它,但我不确定为什么要修复它。任何想法都会受到欢迎。

2 个答案:

答案 0 :(得分:0)

现在应该修复。如果不是,请在http://nuget.codeplex.com

上提交错误

答案 1 :(得分:0)

只是对此有点了解,因为我之前遇到过这个问题,并且与你自己类似地修复了它 - 尽管我发生了多个.sln文件和项目,并且通过Nuget包下载,绑定变得完全错误。它开始引用我不会使用的版本,并且没有,并且所有绑定都已被删除。基本上简单的解决方案是重新编写自己的绑定并检查您是否删除(隐藏文件),如果有任何可能影响项目的其他绑定版本的引用。遗憾的是,这种情况发生在我看来我的EF试图过于聪明并且编写和引用错误的绑定,虽然更新Nuget包也没有帮助,但我很高兴你得到了你的解决方案。如果有人确实有这样的问题,只需先检查你的引用,版本和绑定。