在将 ASP.NET 2.0 网站从 Windows XP(32 位)机器迁移到 Windows 7(64 位)机器时,我经历了一段艰难的时期。有很多事情要做,但我会专注于手头的问题。
问题: 我收到一条错误消息,提示“无法加载文件或组装‘MySQL.Data,版本 5.2.3.0,Culture...’或其依赖项之一。”
问题是:我没有在解决方案中的任何地方引用 MySQL.Data 版本 5.2.3.0(或者至少我找不到)。我在这台计算机上安装了 MySQL 6.6,我在我的 web.config 文件中引用了它。对于我的生活,我找不到引用 5.2.3 的文件。我已经搜索了“5.2.3”的整个解决方案,但无处可寻。我浏览了我的配置文件,但找不到 MySQL 5.2.3。我也浏览了我所有的 *.cs 文件。没有 5.2.3。没有任何。压缩!纳达。然而,当我尝试访问一个特定的代码文件(它有一个 using MySql.Data.MySqlClient 语句)时,我得到了上面的错误。
堆栈跟踪没有太大帮助。它显示了一个 C# 文件作为问题的根源。但是,就像我上面所说的那样,该文件上没有 5.2.3 的痕迹。没有任何。所以我对引用 5.2.3 程序集的位置有点困惑。
堆栈跟踪如下:
[FileNotFoundException: Could not load file or assembly 'MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The system cannot find the file specified.]
Login.Page_Load(Object sender, EventArgs e) in c:\Jose\KMWebsite2\Login.aspx.cs:42
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
然后还有这个:
=== Pre-bind state information ===
LOG: User = Computer1\Jose
LOG: DisplayName = MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
(Fully-specified)
LOG: Appbase = file:///C:/Jose/KMWebsite2/
LOG: Initial PrivatePath = C:\Jose\KMWebsite2\bin
Calling assembly : App_Web_lyss4wgv, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Jose\KMWebsite2\web.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: MySql.Data, Version=5.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
LOG: Attempting download of new URL file:///C:/Users/Jose/AppData/Local/Temp/Temporary ASP.NET Files/kmwebsite2/49ca7fd8/cb38a83/MySql.Data.DLL.
LOG: Attempting download of new URL file:///C:/Users/Jose/AppData/Local/Temp/Temporary ASP.NET Files/kmwebsite2/49ca7fd8/cb38a83/MySql.Data/MySql.Data.DLL.
LOG: Attempting download of new URL file:///C:/Jose/KMWebsite2/bin/MySql.Data.DLL.
LOG: Attempting download of new URL file:///C:/Jose/KMWebsite2/bin/MySql.Data/MySql.Data.DLL.
LOG: Attempting download of new URL file:///C:/Users/Jose/AppData/Local/Temp/Temporary ASP.NET Files/kmwebsite2/49ca7fd8/cb38a83/MySql.Data.EXE.
LOG: Attempting download of new URL file:///C:/Users/Jose/AppData/Local/Temp/Temporary ASP.NET Files/kmwebsite2/49ca7fd8/cb38a83/MySql.Data/MySql.Data.EXE.
LOG: Attempting download of new URL file:///C:/Jose/KMWebsite2/bin/MySql.Data.EXE.
LOG: Attempting download of new URL file:///C:/Jose/KMWebsite2/bin/MySql.Data/MySql.Data.EXE.
问题是:该参考在哪里?如何在我的解决方案中找到它并将其更新到版本 6?
背景和更多细节(可选:-)): 就像我上面所说的,我正在尝试将站点从 XP(32 位)计算机迁移到 Windows 7(64 位)计算机。起初,我只是尝试在新的 Windows 7 计算机上打开该网站,但没有成功。Visual Studio 2008 在打开解决方案后会立即冻结,我不得不将其关闭。所以我决定从头开始创建网站,一次添加一个不同的文件、文件夹和程序集,解决我遇到的问题。
在原来的机器上,我确实安装了 MySQL 5。但是,当切换到新的时,我想移动到 MySQL 6。旧机器上的引用都指向 MySQL 5.2.3,所以当然有某种我找不到的隐形引用。
我的系统: 在新机器上:
- Windows 7(64 位)SP1
- Visual Studio 2008 网站
- 网站使用内置的文件系统运行
- Visual Studio Web Server 网站是 ASP.NET 2.0(尝试使用 4.0 创建但放弃了)
- MySQL 6
- 水晶报表和其他导致很多问题的东西
在旧机器上
- 视窗
- 视觉工作室 2008
- 网站从 IIS 运行
- 网站是 ASP.NET 2.0
- MySQL 5
- 水晶报表和许多其他运行顺利的东西