Dapper 因 .net 4.6 失败 - 无法加载文件或程序集
Dapper fails with .net 4.6 - Could not load file or assembly
我有一个针对 .net 4.6 和 Dapper 1.50.4 的 WPF/MVVM Light 应用程序
我正在使用 Visual Studio Pro 2017 开发应用程序
这个应用程序是工作的,但我得到了一台新电脑,并将这个应用程序的开发转移到了新电脑上。当我尝试在我的新计算机上 运行 此应用程序时,出现以下错误:
System.IO.FileLoadException: 'Could not load file or assembly 'Dapper,
Version=1.50.4.0, Culture=neutral, PublicKeyToken=null' or one of its
dependencies. A strongly-named assembly is required. (Exception from
HRESULT: 0x80131044)'
我试过的
- 我可以确认 dapper.dll 在 projectRoot/bin/debug 目录中
- 我有 运行 Assembly Binding Log Viewer 并且 运行 我的应用程序只有一个错误,但它不在 dapper.dll, 它在 system.windows.dll:
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable C:\Users\jorda\...\bin\Debug\FTC_Application.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
(Fully-specified)
LOG: Appbase = file:///C:/Users/jorda/.../bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = FTC_Application.exe
Calling assembly : GalaSoft.MvvmLight, Version=5.3.0.19026, Culture=neutral, PublicKeyToken=e7570ab207bcb616.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\jorda\...\bin\Debug\FTC_Application.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows.DLL.
LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows/System.Windows.DLL.
LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows.EXE.
LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows/System.Windows.EXE.
LOG: All probing URLs attempted and failed.
- 我已经卸载并重新安装了 dapper 的 NuGet 包
- 清除了我项目中的 obj 文件夹以强制重建
- 该应用程序存在于一个驱动器文件夹中,因此我认为同步过程可能已锁定文件,因此我禁用了一个驱动器,但这并没有解决问题。
- 显然重新启动Visual Studio 反复
- 正在更新到最新版本的 MVVM light - 没有变化
显然与将此解决方案移动到另一台计算机有关,但我不确定在哪里可以找到它。
问题
谁能帮我弄清楚为什么在我的项目中调用 dapper 时会出现这个错误,或者帮我解决这个问题?
提前致谢
所以我没有意识到有一个 Strongly-Named 和未命名的 dapper 版本。事实上,我对签名程序集了解不多。
解决方案:
- 删除普通的 Dapper NuGet 包
- 安装 Dapper.StrongName NuGet 包。
我有一个针对 .net 4.6 和 Dapper 1.50.4 的 WPF/MVVM Light 应用程序 我正在使用 Visual Studio Pro 2017 开发应用程序
这个应用程序是工作的,但我得到了一台新电脑,并将这个应用程序的开发转移到了新电脑上。当我尝试在我的新计算机上 运行 此应用程序时,出现以下错误:
System.IO.FileLoadException: 'Could not load file or assembly 'Dapper, Version=1.50.4.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)'
我试过的
- 我可以确认 dapper.dll 在 projectRoot/bin/debug 目录中
- 我有 运行 Assembly Binding Log Viewer 并且 运行 我的应用程序只有一个错误,但它不在 dapper.dll, 它在 system.windows.dll:
The operation failed. Bind result: hr = 0x80070002. The system cannot find the file specified. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Running under executable C:\Users\jorda\...\bin\Debug\FTC_Application.exe --- A detailed error log follows. === Pre-bind state information === LOG: DisplayName = System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (Fully-specified) LOG: Appbase = file:///C:/Users/jorda/.../bin/Debug/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = FTC_Application.exe Calling assembly : GalaSoft.MvvmLight, Version=5.3.0.19026, Culture=neutral, PublicKeyToken=e7570ab207bcb616. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\jorda\...\bin\Debug\FTC_Application.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. LOG: Post-policy reference: System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows.DLL. LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows/System.Windows.DLL. LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows.EXE. LOG: Attempting download of new URL file:///C:/Users/jorda/.../bin/Debug/System.Windows/System.Windows.EXE. LOG: All probing URLs attempted and failed.
- 我已经卸载并重新安装了 dapper 的 NuGet 包
- 清除了我项目中的 obj 文件夹以强制重建
- 该应用程序存在于一个驱动器文件夹中,因此我认为同步过程可能已锁定文件,因此我禁用了一个驱动器,但这并没有解决问题。
- 显然重新启动Visual Studio 反复
- 正在更新到最新版本的 MVVM light - 没有变化
显然与将此解决方案移动到另一台计算机有关,但我不确定在哪里可以找到它。
问题
谁能帮我弄清楚为什么在我的项目中调用 dapper 时会出现这个错误,或者帮我解决这个问题?
提前致谢
所以我没有意识到有一个 Strongly-Named 和未命名的 dapper 版本。事实上,我对签名程序集了解不多。
解决方案:
- 删除普通的 Dapper NuGet 包
- 安装 Dapper.StrongName NuGet 包。