我有大约90个项目的大型解决方案。 NodaTime用于许多项目,每个使用它的项目都使用2.2.0版本。
项目A使用NodaTime 2.2.0并引用我添加的新项目(项目B),该项目使用NodaTime 2.2.3。如果添加了此引用并且项目A以任何方式调用项目B中的代码,则在调试时会出现“应用程序处于中断模式”页面。即使我在进入Main之前使用F11启动应用程序,我也会得到这个。从项目A中删除项目B的使用(甚至保留参考)并使用F11运行使我离开Main的第一个支撑。
调用堆栈为空,调试面板中的“事件”窗口显示异常,但没有进一步的信息。
使用FUSLOGVW.exe我得到以下输出:
*** Assembly Binder Log Entry (19/12/2017 @ 13:59:44) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
...
LOG: DisplayName = NodaTime, Version=2.2.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1
...
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: NodaTime, Version=2.2.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/home/*****/Serialisation/Serialisation/BootstrapperStartupSerialisation/bin/Debug/NodaTime.DLL.
LOG: Attempting download of new URL file:///C:/home/*****/Serialisation/Serialisation/BootstrapperStartupSerialisation/bin/Debug/NodaTime/NodaTime.DLL.
LOG: Attempting download of new URL file:///C:/home/*****/Serialisation/Serialisation/BootstrapperStartupSerialisation/bin/Debug/NodaTime.EXE.
LOG: Attempting download of new URL file:///C:/home/*****/Serialisation/Serialisation/BootstrapperStartupSerialisation/bin/Debug/NodaTime/NodaTime.EXE.
LOG: All probing URLs attempted and failed.
现在我尝试使用测试应用程序重新创建问题,但是我没有得到相同的结果。相反,我得到一个System.IO.FileLoadException
运行时错误,如下所示:
最小的例子是带有Noda Time 2.2.0的控制台应用程序,代码如下:
namespace OlderRef
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(SystemClock.Instance.GetCurrentInstant());
Console.WriteLine(Class1.GetTime());
Console.ReadLine();
}
}
}
使用此代码引用使用Noda Time 2.2.3的类库:
namespace NewerRef
{
public class Class1
{
public static string GetTime()
{
return SystemClock.Instance.GetCurrentInstant().ToString();
}
}
}
为什么我的生产应用程序在main之前进入break模式,因为测试应用程序在使用程序集时抛出异常?
其他信息:
像这样完成的绑定重定向不起作用:
<assemblyIdentity name="NodaTime" publicKeyToken="4226afe0d9b296d1" culture="neutral" />
<bindingRedirect oldVersion="2.2.0" newVersion="2.2.3"/>
Application是.NET Framework 4.7中的WPF应用程序