c# windows 微软服务点 System.TypeInitializationException
c# windows microsoft pointofservice System.TypeInitializationException
我在同一个解决方案下有两个 Windows Forms 应用程序。
A.EXE 框架是针对 x86 的 4.5.2。
B.EXE 框架是针对 x86 的 3.5。
点击按钮 A.EXE 我打开 B.EXE。
在B.EXE中有一个打印到EPSON TMT81的功能。
在 B.EXE 表单加载中,我初始化打印机对象...
m_Printer = new ThermalPrinter();
热敏打印机class:
string strLogicalName = "PosPrintTMT81";
try
{
//Create PosExplorer
PosExplorer posExplorer = new PosExplorer();
DeviceInfo deviceInfo = null;
try
{
deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
}
catch (Exception ex)
{
string strErrorMsg = ex.Message.ToString()
+ "\n\nPlease rectify the error and try again.";
LogException(ex);
return strErrorMsg;
}
第PosExplorer posExplorer = new PosExplorer();
行returns错误...
System.TypeInitializationException The type initializer for
'Microsoft.PointOfService.Management.Explorer' threw an exception.
此问题的一个常见解决方案是通过将以下内容添加到您的 app.config 来恢复旧版 .NET 代码访问安全 (CAS) 策略:
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>
您可以尝试将此添加到两个应用程序的 app.config 中,看看是否可以解决问题。但是,这仅适用于 .NET 4 及更高版本中的应用 运行ning。
如果更改此设置对您来说不是长期解决方案,那么您的 B 应用确实必须 运行 仅在 .NET 3.5 中。因此,您需要调查导致它在 .NET 4 中 运行 的原因。
可能是您从 A 打开应用 B 的特定方式造成的 - 您可以提供该代码。
或者您的 B app.config 中是否有类似以下内容?...
<startup>
<supportedRuntime version="v4.0"/>
您还可以提供 app.config。
我在同一个解决方案下有两个 Windows Forms 应用程序。
A.EXE 框架是针对 x86 的 4.5.2。
B.EXE 框架是针对 x86 的 3.5。
点击按钮 A.EXE 我打开 B.EXE。
在B.EXE中有一个打印到EPSON TMT81的功能。
在 B.EXE 表单加载中,我初始化打印机对象...
m_Printer = new ThermalPrinter();
热敏打印机class:
string strLogicalName = "PosPrintTMT81";
try
{
//Create PosExplorer
PosExplorer posExplorer = new PosExplorer();
DeviceInfo deviceInfo = null;
try
{
deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
}
catch (Exception ex)
{
string strErrorMsg = ex.Message.ToString()
+ "\n\nPlease rectify the error and try again.";
LogException(ex);
return strErrorMsg;
}
第PosExplorer posExplorer = new PosExplorer();
行returns错误...
System.TypeInitializationException The type initializer for 'Microsoft.PointOfService.Management.Explorer' threw an exception.
此问题的一个常见解决方案是通过将以下内容添加到您的 app.config 来恢复旧版 .NET 代码访问安全 (CAS) 策略:
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>
您可以尝试将此添加到两个应用程序的 app.config 中,看看是否可以解决问题。但是,这仅适用于 .NET 4 及更高版本中的应用 运行ning。
如果更改此设置对您来说不是长期解决方案,那么您的 B 应用确实必须 运行 仅在 .NET 3.5 中。因此,您需要调查导致它在 .NET 4 中 运行 的原因。
可能是您从 A 打开应用 B 的特定方式造成的 - 您可以提供该代码。
或者您的 B app.config 中是否有类似以下内容?...
<startup>
<supportedRuntime version="v4.0"/>
您还可以提供 app.config。