首页 / 浏览问题 / 组件GIS / 问题详情
使用组件的OSGBFile2MongoDB方法报错
23EXP 2021年04月06日
使用产品:iObject10.1.1

问题描述一:

    C#利用iObject.Net的“OSGBCacheBuilder.OSGBFile2MongoDB”将瓦片保存到数据库中,一台机器好用,而另一台机器则报错。瓦片数据和数据库使用的都是同一套,问题应该是处在超图api了,能否帮看下是什么问题?Bin文件夹下log日志输出内容如下:

2021-04-06 10:15:13 [error] Failed to Create TileStorage Plugins, ThreadID: 4936, Timespan(ms): 0, ResourceID: -100, SourceCode: D:\TeamCity\UGO9DTrunk\01_SourceCode\Src\CacheBuilder\UGOSGBCacheBuilder.cpp(2939)
2021-04-06 10:18:00 [error] Failed to Create TileStorage Plugins, ThreadID: 17136, Timespan(ms): 166593, ResourceID: -100, SourceCode: D:\TeamCity\UGO9DTrunk\01_SourceCode\Src\CacheBuilder\UGOSGBCacheBuilder.cpp(2939)

第二个问题,如下代码在执行到build()方法时报“外部组件发生异常”,请问是什么原因(采用私有部署方式):

                var builder = new OSGBCacheBuilder();
                builder.Dataset = dataset;
                builder.OutputFolder = outputFolder;
                builder.CacheName = cacheName;
                builder.FileType = CacheFileType.S3MB;
                builder.IsInstance = true;
                return builder.Build();

1个回答

您好,您的两个问题其实都已一个原因。

您在对代码项目换机的时候并没有把,配置、应用、环境变量等内容同步成两个电脑一样的状态导致的。

及项目文件、路径、dll或其他内容丢失失效的问题。

代码的换机常规方法是通过github同步、vs同步等方法,硬拷贝需要您自己手动处理好项目得资源、引用等问题。

因此不是api的问题,建议您学习查询代码换机的开发知识技术解决该问题。
10,758EXP 2021年04月08日
第一个问题:

我是在开发机器上,做好项目了,测试通过,然后把Debug文件夹拷贝到另一台机器上运行的(Debug文件夹包含Bin_x64文件夹,私有部署方式)

第二个问题:

是在我自己的开发机器上,就不好用,报的错误。


私有部署只是您的部署方式,但是部署方案,部署实施方法显而易见没有成功。



外部组件异常建议您在项目资源管理器中右键,重新生成解决方案后重启vs,或重新引用使用的dll后重新生成解决方案vs。

该问题是Vs调试方案的bug。

请问我开发完的桌面工具,给他人使用时,环境配置上除了下面操作,还有遗漏的方面吗?

1.引用,并拷贝为false

2.配置文件以及依赖bin文件夹

有没有重新生成过解决方案
一般来说,正常开发过程中都是建议使用代码同步的方式换机,而不是硬拷贝。

类库都是封装了的,硬拷贝导致的错误是代码移植过程导致的,而不是第三方类库,在解决上您从该过程为出发点解决更快,毕竟sumpermap的方法和接口没有使用报错。
目的不是要把代码开发环境给别的机器,而是开发了个工具,然后拷贝给别人,让他们直接使用。

别的机器使用时,结果bin下的log就报错:

2021-04-08 11:03:30 [error] Failed to Create TileStorage Plugins, ThreadID: 16432, Timespan(ms): 0, ResourceID: -100, SourceCode: D:\TeamCity\UGO1010\01_SourceCode\Src\CacheBuilder\UGOSGBCacheBuilder.cpp(3083)
不是换机开发的话,那建议您直接打包程序。
同时,您的错误信息显示的是,您的“GOSGBCacheBuilder.cpp”代码中,创建TileStorage缓存信息类失败。

您可以通过两方面的排查找到您代码的问题,

外部:TileStorage的相关引用和环境,

内部:您代码中TileStorage与TileStorageInfo相关部分的参数在其他计算机上调试是否正确,可以使用。

您现在基本排除外部问题的话,可以开始从内部问题排查。
...