【发布时间】:2014-08-04 21:08:36
【问题描述】:
我在 .dll 的发布版本上运行了 peverify,它给了我错误“堆栈深度因路径而异”:
[IL]: Error: [C:\tfs\EcoSys\SCM\NextGenInstaller\Cmc.Installer\Cmc.Installer.Desktop\bin\Release\Cmc.Installer.Modules.Crm.dll : Cmc.Installer.Modules.Crm.Models.DatabaseInfo::set_Action][offset 0x0000007F] Stack depth differs depending on path.
1 Error(s) Verifying C:\tfs\EcoSys\SCM\NextGenInstaller\Cmc.Installer\Cmc.Installer.Desktop\bin\Release\Cmc.Installer.Modules.Crm.dll
set_Action的代码如下:
public InstallerAction Action
{
get { return _action; }
set
{
_action = value;
InstallMainServer = false;
InstallDistributorServer = false;
InstallAnalyticsServer = false;
InstallMediaServer = false;
InstallWebTrakServer = false;
switch (DatabaseType)
{
case DatabaseType.Main:
InstallMainServer = (Action == InstallerAction.Install);
break;
case DatabaseType.Distributor:
InstallDistributorServer = (Action == InstallerAction.Install);
break;
case DatabaseType.Analytics:
InstallAnalyticsServer = (Action == InstallerAction.Install);
break;
case DatabaseType.Media:
InstallMediaServer = (Action == InstallerAction.Install);
break;
case DatabaseType.WebTrak:
InstallWebTrakServer = (Action == InstallerAction.Install);
break;
default:
throw new ArgumentOutOfRangeException("DatabaseType");
}
}
}
我不知道为什么这个错误只发生在发布版本中。
【问题讨论】:
-
这是 C# 编译器中的一个错误。什么版本?
-
或验证者 :) 安装程序往往会做一些奇怪的事情。这是一个非常严重的事故,这里没有人可以修复,求助于编译代码的工具的任何人。 Connect.microsoft.com 如果是 Microsoft,他们将需要一个重现项目。
-
Visual Studio 2013 / .NET 4.5.0(VS 和 TFS 版本)。这里不涉及安装程序。我可以在本地随意复制。
-
我在这里提交了错误报告bit.ly/1s6kyGQ