这让我疯了! 我的服务器上有一个asp.net应用程序。它引用了两个dll文件,它们放在服务器上的GAC中。我还将pdb文件放在GAC文件夹中,以便我可以远程调试。
这是我的问题: 当我打电话给以下人员时:
addToAbsenceList(e.Initials, a.StartDate, a.EndDate, a.Type.TypeId, vacationDays);
我可以看到e.Initials包含值“OFR”。 当我按F11跳转到addToAbsenceList:
addToAbsenceList(string initials, DateTime startDate, DateTime endDate, int AbsenceType, double duration)
变量initials现在包含值NULL。
我刚刚纠正了这个问题(以前它总是发送NULL - 现在它可以正常工作),所以不知怎的,它似乎仍然从我以前的代码中获取信息。
我的GAC文件夹中只有一个版本的dll 我确保我的dll文件夹中的版本是新版本(基于文件的日期) 要100%确定我还将新的dll文件放在项目的BIN文件夹中 当用JetBrains中的dotPeek反编译dll文件时,我发现它包含了我的更正 我试过从IIS重新启动我的Web应用程序 它适用于我的开发环境。
所以不知何故,似乎旧的dll文件仍然在我的GAC中处于活动状态。我怎样才能确保调用新的?最好不要重新启动生产服务器。
服务器:MS Windows 2008 R2 64位
发展:Windows 7 32位
答案 0 :(得分:0)
如果GAC中有2个相同汇编的dll而不是web.config,则可以指定必须使用哪个dll:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="YourClassLibrary" publicKeyToken="b035c4774706cc72" culture="neutral"/>
<bindingRedirect oldVersion= "1.0.1830.10493" newVersion= "1.1.1830.10461"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
在 newVersion 中,您可以指定必须使用的版本。
答案 1 :(得分:0)
相信我必须将我的评论“升级”为答案:
现在它有效!我尝试以管理员身份打开命令提示符。然后我将dll文件直接复制到GAC文件夹中。然后它奏效了。为什么它应该与在管理员模式下打开Windows资源管理器并复制它不同,这对我来说是一个谜。另外,因为我确实检查了日期/时间,并且它们已正确更新。 -