向后兼容SP26

2020-08-17 07:11发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们使用CRforVS13SP1...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们使用CRforVS13SP13开发了一个应用程序构建,并将其部署到具有相同版本运行时CRruntime13SP13的客户/客户端。 所以没问题。

现在,一些客户需要升级到更高版本的运行时13SP26,我们不希望他们在其配置文件中重定向SP26的已更改版本编号。 因此,我们决定升级Visual Studio开发环境,并使用更高版本的CRforVS13SP26重建应用程序。 这可以在带有SP26运行时的客户/客户中正常使用。

我们希望它仍然与继续使用旧SP13的客户兼容,但是现在我们看到了错误。 SP26中是否没有向后兼容性,我们现在是否还需要将所有其他客户/客户端也升级到运行时SP26?

8条回答
95年老男孩
2020-08-17 07:18

据我所知,由于CR for VS只能加载/安装一个版本,因此当您的应用加载时,它将加载app.config文件, 因此,为时已晚。

只有通过加载程序才能检查注册表,写入/更新app.config文件,然后加载主应用程序。

您 可以尝试以下操作:

 foreach(AppDomain.CurrentDomain.GetAssemblies()中的Assembly MyVerison)
 {
     如果(MyVerison.FullName.Substring(0,38)==" CrystalDecisions.CrystalReports.Engine")
     {
        //文件:C:\ Windows \ assembly \ GAC_MSIL \ CrystalDecisions.CrystalReports.Engine \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.CrystalReports.Engine.dll
        //文件:C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ CrystalDecisions.CrystalReports.Engine \ v4.0_13.0.4000.0__692fbea5521e1304 \ CrystalDecisions.CrystalReports.Engine.dll
        //InternalName:Crystal Reports
        //OriginalFilename:
        //FileVersion:13.0.9.1312
        //FileDescription:Crystal Reports
        //产品:SBOP Crystal Reports
        //产品版本:13.0.9.1312
        //调试:False
        //已修补:错误
        //PreRelease:否
        //PrivateBuild:错误
        //SpecialBuild:False
        //语言:英语(美国)

         System.Diagnostics.FileVersionInfo fileVersionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(MyVerison.Location);
         txtRuntimeVersion.Text + = fileVersionInfo.FileVersion.ToString();
        //检查是否可以加载CrsytalDecisions.Enterprise dll(除Cortez之外的所有内容-托管报告)
         如果(fileVersionInfo.FileVersion.Substring(0,2)==" 13")
         {
             btnRasOpen.Enabled = false;
         }
         CRVer = fileVersionInfo.FileVersion.Substring(0,2);
        //返回;

         object []属性;
        //检查调试模式
         尝试
         {
             var assembly = Assembly.LoadFrom(@" C:\ Windows \ assembly \ GAC_MSIL \ CrystalDecisions.CrystalReports.Engine \ 13.0.2000.0__692fbea5521e1304 \ CrystalDecisions.CrystalReports.Engine.dll");
             attribs = assembly.GetCustomAttributes(typeof(DebuggableAttribute),false);
         }
         抓住
         {
             var assembly = Assembly.LoadFrom(@" C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ CrystalDecisions.CrystalReports.Engine \ v4.0_13.0.4000.0__692fbea5521e1304 \ CrystalDecisions.CrystalReports.Engine.dll");
             attribs = assembly.GetCustomAttributes(typeof(DebuggableAttribute),false);
         }


        //如果未找到" DebuggableAttribute",则它肯定是优化的版本
         如果(attribs.Length> 0)
         {
            //仅仅因为找到了'DebuggableAttribute'并不一定意味着
            //这是一个DEBUG构建; 我们必须检查" JIT优化"标志
            //即可以检查"生成PDB",但启用JIT优化
             DebuggableAttribute debuggableAttribute = attribs [0]作为DebuggableAttribute;
             如果(debuggableAttribute!= null)
             {
                 bool HasDebuggableAttribute = true;
                 var IsJITOptimized =!debuggableAttribute.IsJITOptimizerDisabled;
                 var BuildType = debuggableAttribute.IsJITOptimizerDisabled吗?  " Debug":"发布";

                //检查调试输出"完整"还是"仅pdb"
                 var DebugOutput =(debuggableAttribute.DebuggingFlags&
                                 DebuggableAttribute.DebuggingModes.Default)!=
                                 DebuggableAttribute.DebuggingModes.None
                                 ?  " Full":"仅pdb";
             }
         }
         其他
         {
             var IsJITOptimized = true;
             var BuildType ="发布";
         }
     }
 } 

Don

一周热门 更多>