【发布时间】:2015-08-12 19:24:23
【问题描述】:
我正在使用 Ninject (v3.2.2.0) 和基于 .net 3.5 框架构建的工具。这一直很好 - 直到几周前我搁置了开发。
我再次拿起它以准备发布,但它不再正常 - 它仍然可以毫无问题地编译,但现在每当我尝试运行它时都会收到 FileNotFoundException:
发生 System.IO.FileNotFoundException 消息=无法加载文件或程序集 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' 或其依赖项之一。该系统找不到指定的文件。 来源=忍者 文件名=System.Core,版本=2.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e FusionLog=Assembly manager 加载自:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll 在可执行文件 E:\work\wire\M\Tools\Import\bin\Debug\Import.vshost.exe 下运行 --- 详细的错误日志如下。
=== 预绑定状态信息 ===
日志:用户 = ZOO\TAL 日志:DisplayName = System.Core,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e(完全指定) 日志:Appbase = file:///E:/work/wire/M/Tools/Import/bin/Debug/ 日志:初始 私有路径 = NULL 调用程序集:Ninject,Version=3.2.0.0,Culture=neutral,PublicKeyToken=c7192dc5380945e7。
LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件:E:\work\wire\MR\Tools\Import\bin\Debug\Import.vshost.exe.Config 日志:使用 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config 中的机器配置文件。 日志:政策后参考:System.Core,版本=2.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e 日志:正在尝试下载新的 URL 文件:///E:/work/wire/M/Tools/Import/bin/Debug/System.Core.DLL。 日志:正在尝试下载新的 URL 文件:///E:/work/wire/M/Tools/Import/bin/Debug/System.Core/System.Core.DLL。 日志:正在尝试下载新的 URL 文件:///E:/work/wire/M/Tools/Import/bin/Debug/System.Core.EXE。 日志:正在尝试下载新的 URL 文件:///E:/work/wire/M/Tools/Import/bin/Debug/System.Core/System.Core.EXE。
堆栈跟踪: 在 Ninject.Planning.Bindings.BindingConfiguration..ctor() 在 Ninject.Planning.Bindings.Binding..ctor(类型服务) 在 Ninject.Syntax.BindingRoot.BindT 在 Ninject.KernelBase..ctor(IComponentContainer 组件,INinjectSettings 设置,INinjectModule[] 模块) 在 Ninject.StandardKernel..ctor(INinjectModule[] 模块) 在 Import.ImportBootstrapper.Import(String[] xiArgs) 中 e:\work\wire\M\Tools\Import\ImportBootstrapper.cs:line 16 内部异常:
我已将其发挥到极致 - 我目前仅尝试运行以下代码:
using Ninject;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
new StandardKernel();
}
}
}
同样,编译得很好,但是一旦我到达new StandardKernal(); 行,它就会中断并出现与上述相同的错误。
它也在源代码控制中,所以我已经将它加载到同事的系统、参考、库、配置和所有东西上,是的,它在他们的机器上运行良好。
为了尝试解决这个问题,我有:
确保引用的 System.Core 文件存在(确实存在)。
确保它具有正确的权限。
-
确保 GAC 中确实存在 System.Core - 它确实存在,结果如下:
C:\> gacutil -l | find /i "system.core" System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL 在“打开或关闭 Windows 功能”中,删除 .NET Framework 3.5,重新启动,重新安装 .NET 3.5,再次重新启动,尝试运行程序。
安装了所有可用的 Windows 更新(最初是 .NET 更新,但最终是全部)。
尝试查找
sfc /scannow的问题,但没有效果。-
在 App.config 文件中修改了各种 supportRuntime 版本:
<configuration> <startup> <supportedRuntime version="v2.0.50727"/> <supportedRuntime version="v3.5.30729"/> </startup> </configuration>
(有一个,两个,或者两者都没有,没有明显的区别)
确保参考文件肯定包含 System.Core (
<Reference Include="System.core" />)。确保项目属性明确设置为 .Net 3.5。
我还查看了 machine.config 和 web.config 文件。没有任何问题,但我不确定我是否能够确定是否有明显错误,所以我不能说这条研究途径已关闭。
我现在完全不知所措。我的意思是,没有得到一台新电脑并从那里开始。
我做错了什么?
【问题讨论】:
-
只是一个想法:您说的是 .NET 3.5,但日志显示的是版本 2 (v2.0.50727)?
-
是的 - 到目前为止,我一直假设它指的是运行时版本(表示 CLR 的版本 - 并且 .NET Framework 3.5 仍然使用 CLR 2.0(.50727))。也就是说,我完全有可能错了。如果我错了,我将如何解决它? Visual Studio 肯定认为一切都在使用 .Net 3.5。
-
你是对的,.NET 3.5 uses CLR v.2.0。 This issue 似乎是相关的,但我猜您已经进行了大量搜索?
-
是的。可悲的是,这个问题似乎可以通过安装 Microsoft silverlight 解决(这对我没有帮助)。我觉得我的一定是相关的,但他们的解决方案都不是特别相关。
标签: c# windows .net-3.5 ninject filenotfoundexception